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 56B25D3ABFA for ; Mon, 11 Nov 2024 22:07:37 +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:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MxTLQ/Oiz/TUzObKhPNd2y+kjqYqeUnTWQ8C9SyueBw=; b=EnKvA+nppbbSkE FcHskkpwAClOEfx5uaSSYZz674sjHcRiM9zAx5yI3Is9o5tk0e83l1gT5hGEbn7ckMWZzHQz1ja6s 9PBU4646nPO0AqYieoYKl8S1eDMhK6O4u5TNHERT7mTbv4eSr03trS384p90WhS7qvy6FYuhRPz8h AK/hRDdh2lKMSswavd3363/Ruh414LmwYBxVuqh7ILUaIgIQHKOOMJv+h6WVvkbDh2TlHcgV33IeP ZgW8T2vgN1dDrZPY61/7cnGoBJG8YvZCXfIB4TIVuriNoUVkb5kPB2PjEfpKkIVRm/2cNBMrXwq8G iwW7ND9wtomC7CVqdxyw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tAcZJ-00000001SHo-2Nhg; Mon, 11 Nov 2024 22:07:33 +0000 Received: from relay5-d.mail.gandi.net ([2001:4b98:dc4:8::225]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tAcZG-00000001SH0-1qIM for linux-amlogic@lists.infradead.org; Mon, 11 Nov 2024 22:07:32 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 0BC641C0002; Mon, 11 Nov 2024 22:07:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1731362846; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nvLBpIbXRymgph7QAAvU55QOaoId7HTwuv+sfMNt8G4=; b=ntkkyCgjQYaK73FYXJqWzOXfNXxT51oEVfa94QheQndXN4q3pgTot68IEr0ofUi0Ud6aDw 6fb+pvwfewtJ/eJi+H+5bet77fU+FN9uRlfMozMp8AtuQKEOYEAqiaq3ZV0z1XFJJCbYgp prz4MZbxcfT6v1UrPKTc2IiXebg+Zw1hbLfXi951fsnEe/Fylbv5yJkTSxB3nsF5sx3XWu SSjEVYeyrMctLefS7EDvD/aOMbPck5XRL9YFCXMD+L1PY9LxU71eMpY/dqJJQph/Q6Bj+d +iJykkRgN74cf1wDuSsxYPjrn6nDdIfV3giY934sBiZJbLkD7ENOlcu8410EkA== Date: Mon, 11 Nov 2024 23:07:23 +0100 From: Alexandre Belloni To: xianwei.zhao@amlogic.com Cc: Yiting Deng , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-amlogic@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v5 2/3] rtc: support for the Amlogic on-chip RTC Message-ID: <202411112207234c96cc30@mail.local> References: <20241108-rtc-v5-0-0194727c778b@amlogic.com> <20241108-rtc-v5-2-0194727c778b@amlogic.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20241108-rtc-v5-2-0194727c778b@amlogic.com> X-GND-Sasl: alexandre.belloni@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241111_140730_817758_654887E9 X-CRM114-Status: GOOD ( 21.03 ) 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 T24gMDgvMTEvMjAyNCAxMzo1NDo0MiswODAwLCBYaWFud2VpIFpoYW8gdmlhIEI0IFJlbGF5IHdy b3RlOgo+ICtzdGF0aWMgaW50IGFtbF9ydGNfcmVhZF90aW1lKHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0IHJ0Y190aW1lICp0bSkKPiArewo+ICsJc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0g ZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwl1MzIgdGltZV9zZWM7Cj4gKwo+ICsJLyogaWYgUlRD IGRpc2FibGVkLCByZWFkIHRpbWUgZmFpbGVkICovCj4gKwlpZiAoIXJ0Yy0+cnRjX2VuYWJsZWQp IHsKPiArCQlkZXZfZXJyKGRldiwgIlJUQyBkaXNhYmxlZCwgcmVhZCB0aW1lIGZhaWxlZFxuIik7 CgpUaGVzZSBtZXNzYWdlcyBzaG91bGQgYmUgZHJvcHBlZCwgdGhleSBwcm9iYWJseSB3b24ndCBi ZSBzZWVuIGJ5IGFueQp1c2VyLgoKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwly ZWdtYXBfcmVhZChydGMtPm1hcCwgUlRDX1JFQUxfVElNRSwgJnRpbWVfc2VjKTsKPiArCWlmIChy dGMtPmNvbmZpZy0+Z3JheV9zdG9yZWQpCj4gKwkJdGltZV9zZWMgPSBncmF5X3RvX2JpbmFyeSh0 aW1lX3NlYyk7Cj4gKwlydGNfdGltZTY0X3RvX3RtKHRpbWVfc2VjLCB0bSk7Cj4gKwlkZXZfZGJn KGRldiwgIiVzOiByZWFkIHRpbWUgPSAldXNcbiIsIF9fZnVuY19fLCB0aW1lX3NlYyk7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYW1sX3J0Y19zZXRfdGltZShzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBydGNfdGltZSAqdG0pCj4gK3sKPiArCXN0cnVjdCBhbWxf cnRjX2RhdGEgKnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJdTMyIHRpbWVfc2VjOwo+ ICsKPiArCS8qIGlmIFJUQyBkaXNhYmxlZCwgZmlyc3QgZW5hYmxlIGl0ICovCj4gKwlpZiAoIXJ0 Yy0+cnRjX2VuYWJsZWQpIHsKPiArCQlyZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX0NU UkwsIFJUQ19FTkFCTEUsIFJUQ19FTkFCTEUpOwo+ICsJCXVzbGVlcF9yYW5nZSgxMDAsIDIwMCk7 Cj4gKwkJcnRjLT5ydGNfZW5hYmxlZCA9IHJlZ21hcF90ZXN0X2JpdHMocnRjLT5tYXAsIFJUQ19D VFJMLCBSVENfRU5BQkxFKTsKPiArCQlpZiAoIXJ0Yy0+cnRjX2VuYWJsZWQpIHsKPiArCQkJZGV2 X2VycihkZXYsICJSVEMgZW5hYmxlIGZhaWxlZFxuIik7Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ ICsJCX0KPiArCX0KPiArCj4gKwl0aW1lX3NlYyA9IHJ0Y190bV90b190aW1lNjQodG0pOwo+ICsJ aWYgKHJ0Yy0+Y29uZmlnLT5ncmF5X3N0b3JlZCkKPiArCQl0aW1lX3NlYyA9IGJpbmFyeV90b19n cmF5KHRpbWVfc2VjKTsKPiArCXJlZ21hcF93cml0ZShydGMtPm1hcCwgUlRDX0NPVU5URVJfUkVH LCB0aW1lX3NlYyk7Cj4gKwlkZXZfZGJnKGRldiwgIiVzOiBzZXQgdGltZSA9ICV1c1xuIiwgX19m dW5jX18sIHRpbWVfc2VjKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBhbWxfcnRjX3NldF9hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBydGNfd2thbHJt ICphbGFybSkKPiArewo+ICsJc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0gZGV2X2dldF9kcnZk YXRhKGRldik7Cj4gKwl0aW1lNjRfdCBhbGFybV9zZWM7Cj4gKwo+ICsJLyogaWYgUlRDIGRpc2Fi bGVkLCBzZXQgYWxhcm0gZmFpbGVkICovCj4gKwlpZiAoIXJ0Yy0+cnRjX2VuYWJsZWQpIHsKPiAr CQlkZXZfZXJyKGRldiwgIlJUQyBkaXNhYmxlZCwgc2V0IGFsYXJtIGZhaWxlZFxuIik7Cj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHJ0Yy0+bWFw LCBSVENfQ1RSTCwKPiArCQkJICAgUlRDX0FMUk0wX0VOLCBSVENfQUxSTTBfRU4pOwo+ICsJcmVn bWFwX3VwZGF0ZV9iaXRzKHJ0Yy0+bWFwLCBSVENfSU5UX01BU0ssCj4gKwkJCSAgIFJUQ19BTFJN MF9JUlFfTVNLLCAwKTsKPiArCj4gKwlhbGFybV9zZWMgPSBydGNfdG1fdG9fdGltZTY0KCZhbGFy bS0+dGltZSk7Cj4gKwlpZiAocnRjLT5jb25maWctPmdyYXlfc3RvcmVkKQo+ICsJCWFsYXJtX3Nl YyA9IGJpbmFyeV90b19ncmF5KGFsYXJtX3NlYyk7Cj4gKwlyZWdtYXBfd3JpdGUocnRjLT5tYXAs IFJUQ19BTEFSTTBfUkVHLCBhbGFybV9zZWMpOwo+ICsKPiArCWRldl9kYmcoZGV2LCAiJXM6IGFs YXJtLT5lbmFibGVkPSVkIGFsYXJtX3NldD0lbGxkc1xuIiwgX19mdW5jX18sCj4gKwkJYWxhcm0t PmVuYWJsZWQsIGFsYXJtX3NlYyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgYW1sX3J0Y19yZWFkX2FsYXJtKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJ0Y193 a2Fscm0gKmFsYXJtKQo+ICt7Cj4gKwlzdHJ1Y3QgYW1sX3J0Y19kYXRhICpydGMgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPiArCXUzMiBhbGFybV9zZWM7Cj4gKwlpbnQgYWxhcm1fZW5hYmxlOwo+ ICsJaW50IGFsYXJtX21hc2s7Cj4gKwo+ICsJLyogaWYgUlRDIGRpc2FibGVkLCByZWFkIGFsYXJt IGZhaWxlZCAqLwo+ICsJaWYgKCFydGMtPnJ0Y19lbmFibGVkKSB7Cj4gKwkJZGV2X2VycihkZXYs ICJSVEMgZGlzYWJsZWQsIHJlYWQgYWxhcm0gZmFpbGVkXG4iKTsKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCX0KPiArCj4gKwlyZWdtYXBfcmVhZChydGMtPm1hcCwgUlRDX0FMQVJNMF9SRUcsICZh bGFybV9zZWMpOwo+ICsJaWYgKHJ0Yy0+Y29uZmlnLT5ncmF5X3N0b3JlZCkKPiArCQlhbGFybV9z ZWMgPSBncmF5X3RvX2JpbmFyeShhbGFybV9zZWMpOwo+ICsJcnRjX3RpbWU2NF90b190bShhbGFy bV9zZWMsICZhbGFybS0+dGltZSk7Cj4gKwo+ICsJYWxhcm1fZW5hYmxlID0gcmVnbWFwX3Rlc3Rf Yml0cyhydGMtPm1hcCwgUlRDX0NUUkwsIFJUQ19BTFJNMF9FTik7Cj4gKwlhbGFybV9tYXNrID0g cmVnbWFwX3Rlc3RfYml0cyhydGMtPm1hcCwgUlRDX0lOVF9NQVNLLCBSVENfQUxSTTBfSVJRX01T Syk7Cj4gKwlhbGFybS0+ZW5hYmxlZCA9IChhbGFybV9lbmFibGUgJiYgIWFsYXJtX21hc2spID8g MSA6IDA7Cj4gKwlkZXZfZGJnKGRldiwgIiVzOiBhbGFybS0+ZW5hYmxlZD0lZCBhbGFybT0ldXNc biIsIF9fZnVuY19fLAo+ICsJCWFsYXJtLT5lbmFibGVkLCBhbGFybV9zZWMpOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFtbF9ydGNfcmVhZF9vZmZzZXQoc3RydWN0 IGRldmljZSAqZGV2LCBsb25nICpvZmZzZXQpCj4gK3sKPiArCXN0cnVjdCBhbWxfcnRjX2RhdGEg KnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJdTMyIHJlZ192YWw7Cj4gKwlsb25nIHZh bDsKPiArCWludCBzaWduLCBtYXRjaF9jb3VudGVyLCBlbmFibGU7Cj4gKwo+ICsJLyogaWYgUlRD IGRpc2FibGVkLCByZWFkIG9mZnNldCBmYWlsZWQgKi8KPiArCWlmICghcnRjLT5ydGNfZW5hYmxl ZCkgewo+ICsJCWRldl9lcnIoZGV2LCAiUlRDIGRpc2FibGVkLCByZWFkIG9mZnNldCBmYWlsZWRc biIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJlZ21hcF9yZWFkKHJ0Yy0+ bWFwLCBSVENfU0VDX0FESlVTVF9SRUcsICZyZWdfdmFsKTsKPiArCWVuYWJsZSA9IEZJRUxEX0dF VChSVENfQURKX1ZBTElELCByZWdfdmFsKTsKPiArCWlmICghZW5hYmxlKSB7Cj4gKwkJdmFsID0g MDsKPiArCX0gZWxzZSB7Cj4gKwkJc2lnbiA9IEZJRUxEX0dFVChSVENfU0VDX0FESlVTVF9DVFJM LCByZWdfdmFsKTsKPiArCQltYXRjaF9jb3VudGVyID0gRklFTERfR0VUKFJUQ19NQVRDSF9DT1VO VEVSLCByZWdfdmFsKTsKPiArCQl2YWwgPSAxMDAwMDAwMDAwIC8gKG1hdGNoX2NvdW50ZXIgKyAx KTsKPiArCQlpZiAoc2lnbiA9PSBSVENfU1dBTExPV19TRUNPTkQpCj4gKwkJCXZhbCA9IC12YWw7 Cj4gKwl9Cj4gKwkqb2Zmc2V0ID0gdmFsOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGFtbF9ydGNfc2V0X29mZnNldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGxvbmcgb2Zm c2V0KQo+ICt7Cj4gKwlzdHJ1Y3QgYW1sX3J0Y19kYXRhICpydGMgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKPiArCWludCBzaWduID0gMDsKPiArCWludCBtYXRjaF9jb3VudGVyID0gMDsKPiArCWlu dCBlbmFibGUgPSAwOwo+ICsJdTMyIHJlZ192YWw7Cj4gKwo+ICsJLyogaWYgUlRDIGRpc2FibGVk LCBzZXQgb2Zmc2V0IGZhaWxlZCAqLwo+ICsJaWYgKCFydGMtPnJ0Y19lbmFibGVkKSB7Cj4gKwkJ ZGV2X2VycihkZXYsICJSVEMgZGlzYWJsZWQsIHNldCBvZmZzZXQgZmFpbGVkXG4iKTsKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlpZiAob2Zmc2V0KSB7Cj4gKwkJZW5hYmxlID0g MTsKPiArCQlzaWduID0gb2Zmc2V0IDwgMCA/IFJUQ19TV0FMTE9XX1NFQ09ORCA6IFJUQ19JTlNF UlRfU0VDT05EOwo+ICsJCW1hdGNoX2NvdW50ZXIgPSAxMDAwMDAwMDAwIC8gYWJzKG9mZnNldCkg LSAxOwo+ICsJCWlmIChtYXRjaF9jb3VudGVyIDwgMCB8fCBtYXRjaF9jb3VudGVyID4gUlRDX01B VENIX0NPVU5URVIpCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJlZ192YWwg PSBGSUVMRF9QUkVQKFJUQ19BREpfVkFMSUQsIGVuYWJsZSkgfAo+ICsJCSAgRklFTERfUFJFUChS VENfU0VDX0FESlVTVF9DVFJMLCBzaWduKSB8Cj4gKwkJICBGSUVMRF9QUkVQKFJUQ19NQVRDSF9D T1VOVEVSLCBtYXRjaF9jb3VudGVyKTsKPiArCXJlZ21hcF93cml0ZShydGMtPm1hcCwgUlRDX1NF Q19BREpVU1RfUkVHLCByZWdfdmFsKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBhbWxfcnRjX2FsYXJtX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVk IGludCBlbmFibGVkKQo+ICt7Cj4gKwlzdHJ1Y3QgYW1sX3J0Y19kYXRhICpydGMgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPiArCj4gKwlpZiAoZW5hYmxlZCkgewo+ICsJCXJlZ21hcF91cGRhdGVf Yml0cyhydGMtPm1hcCwgUlRDX0NUUkwsCj4gKwkJCQkgICBSVENfQUxSTTBfRU4sIFJUQ19BTFJN MF9FTik7Cj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHJ0Yy0+bWFwLCBSVENfSU5UX01BU0ssCj4g KwkJCQkgICBSVENfQUxSTTBfSVJRX01TSywgMCk7Cj4gKwl9IGVsc2Ugewo+ICsJCXJlZ21hcF91 cGRhdGVfYml0cyhydGMtPm1hcCwgUlRDX0lOVF9NQVNLLAo+ICsJCQkJICAgUlRDX0FMUk0wX0lS UV9NU0ssIFJUQ19BTFJNMF9JUlFfTVNLKTsKPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMocnRjLT5t YXAsIFJUQ19DVFJMLAo+ICsJCQkJICAgUlRDX0FMUk0wX0VOLCAwKTsKPiArCX0KPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBydGNfY2xhc3Nfb3BzIGFt bF9ydGNfb3BzID0gewo+ICsJLnJlYWRfdGltZSA9IGFtbF9ydGNfcmVhZF90aW1lLAo+ICsJLnNl dF90aW1lID0gYW1sX3J0Y19zZXRfdGltZSwKPiArCS5yZWFkX2FsYXJtID0gYW1sX3J0Y19yZWFk X2FsYXJtLAo+ICsJLnNldF9hbGFybSA9IGFtbF9ydGNfc2V0X2FsYXJtLAo+ICsJLmFsYXJtX2ly cV9lbmFibGUgPSBhbWxfcnRjX2FsYXJtX2VuYWJsZSwKPiArCS5yZWFkX29mZnNldCA9IGFtbF9y dGNfcmVhZF9vZmZzZXQsCj4gKwkuc2V0X29mZnNldCA9IGFtbF9ydGNfc2V0X29mZnNldCwKPiAr fTsKPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBhbWxfcnRjX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0gKHN0cnVjdCBhbWxf cnRjX2RhdGEgKilkYXRhOwo+ICsKPiArCXJlZ21hcF93cml0ZShydGMtPm1hcCwgUlRDX0FMQVJN MF9SRUcsIDApOwo+ICsJcmVnbWFwX3dyaXRlKHJ0Yy0+bWFwLCBSVENfSU5UX0NMUiwgUlRDX0FM Uk0wX0lSUV9TVEFUVVMpOwo+ICsKPiArCXJ0Y191cGRhdGVfaXJxKHJ0Yy0+cnRjX2RldiwgMSwg UlRDX0FGIHwgUlRDX0lSUUYpOwo+ICsKPiArCXJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgYW1sX3J0Y19pbml0KHN0cnVjdCBhbWxfcnRjX2RhdGEgKnJ0YykKPiAr ewo+ICsJdTMyIHJlZ192YWwgPSAwOwo+ICsKPiArCXJ0Yy0+cnRjX2VuYWJsZWQgPSByZWdtYXBf dGVzdF9iaXRzKHJ0Yy0+bWFwLCBSVENfQ1RSTCwgUlRDX0VOQUJMRSk7Cj4gKwlpZiAoIXJ0Yy0+ cnRjX2VuYWJsZWQpIHsKPiArCQlpZiAoY2xrX2dldF9yYXRlKHJ0Yy0+cnRjX2NsaykgPT0gT1ND XzI0TSkgewo+ICsJCQkvKiBzZWxlY3QgMjRNIG9zY2lsbGF0b3IgKi8KPiArCQkJcmVnbWFwX3dy aXRlX2JpdHMocnRjLT5tYXAsIFJUQ19DVFJMLCBSVENfT1NDX1NFTCwgUlRDX09TQ19TRUwpOwo+ ICsKPiArCQkJLyoKPiArCQkJICogU2V0IFJUQyBvc2NpbGxhdG9yIHRvIGZyZXFfb3V0IHRvIGZy ZXFfaW4vKChOMCpNMCtOMSpNMSkvKE0wK00xKSkKPiArCQkJICogRW5hYmxlIGNsb2NrX2luIGdh dGUgb2Ygb3NjaWxsYXRvciAyNE1Iego+ICsJCQkgKiBTZXQgTjAgdG8gNzMzLCBOMSB0byA3MzIK PiArCQkJICovCj4gKwkJCXJlZ192YWwgPSBGSUVMRF9QUkVQKFJUQ19PU0NJTl9JTl9FTiwgMSkK PiArCQkJCSAgfCBGSUVMRF9QUkVQKFJUQ19PU0NJTl9PVVRfQ0ZHLCAxKQo+ICsJCQkJICB8IEZJ RUxEX1BSRVAoUlRDX09TQ0lOX09VVF9OME0wLCBSVENfT1NDSU5fT1VUXzMyS19OMCkKPiArCQkJ CSAgfCBGSUVMRF9QUkVQKFJUQ19PU0NJTl9PVVRfTjFNMSwgUlRDX09TQ0lOX09VVF8zMktfTjEp Owo+ICsJCQlyZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX09TQ0lOX0NUUkwwLCBSVENf T1NDSU5fSU5fRU4KPiArCQkJCQkgIHwgUlRDX09TQ0lOX09VVF9DRkcgfCBSVENfT1NDSU5fT1VU X04wTTAKPiArCQkJCQkgIHwgUlRDX09TQ0lOX09VVF9OMU0xLCByZWdfdmFsKTsKPiArCj4gKwkJ CS8qIFNldCBNMCB0byAyLCBNMSB0byAzLCBzbyBmcmVxX291dCA9IDMyNzY4IEh6Ki8KPiArCQkJ cmVnX3ZhbCA9IEZJRUxEX1BSRVAoUlRDX09TQ0lOX09VVF9OME0wLCBSVENfT1NDSU5fT1VUXzMy S19NMCkKPiArCQkJCSAgfCBGSUVMRF9QUkVQKFJUQ19PU0NJTl9PVVRfTjFNMSwgUlRDX09TQ0lO X09VVF8zMktfTTEpOwo+ICsJCQlyZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX09TQ0lO X0NUUkwxLCBSVENfT1NDSU5fT1VUX04wTTAKPiArCQkJCQkgIHwgUlRDX09TQ0lOX09VVF9OMU0x LCByZWdfdmFsKTsKPiArCQl9IGVsc2Ugewo+ICsJCQkvKiBzZWxlY3QgMzJLIG9zY2lsbGF0b3Ig Ki8KPiArCQkJcmVnbWFwX3dyaXRlX2JpdHMocnRjLT5tYXAsIFJUQ19DVFJMLCBSVENfT1NDX1NF TCwgMCk7Cj4gKwkJfQo+ICsJfQo+ICsJcmVnbWFwX3dyaXRlX2JpdHMocnRjLT5tYXAsIFJUQ19J TlRfTUFTSywKPiArCQkJICBSVENfQUxSTTBfSVJRX01TSywgUlRDX0FMUk0wX0lSUV9NU0spOwo+ ICsJcmVnbWFwX3dyaXRlX2JpdHMocnRjLT5tYXAsIFJUQ19DVFJMLCBSVENfQUxSTTBfRU4sIDAp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFtbF9ydGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAr CXN0cnVjdCBhbWxfcnRjX2RhdGEgKnJ0YzsKPiArCXZvaWQgX19pb21lbSAqYmFzZTsKPiArCWlu dCByZXQgPSAwOwo+ICsKPiArCXJ0YyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcnRjKSwg R0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXJ0YykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwly dGMtPmNvbmZpZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+ICsJaWYgKCFydGMt PmNvbmZpZykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwliYXNlID0gZGV2bV9wbGF0Zm9y bV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwo+ICsJaWYgKElTX0VSUihiYXNlKSkKPiArCQly ZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoYmFzZSksICJyZXNvdXJjZSBpb3JlbWFw IGZhaWxlZFxuIik7Cj4gKwo+ICsJcnRjLT5tYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2 LCBiYXNlLCAmYW1sX3J0Y19yZWdtYXBfY29uZmlnKTsKPiArCWlmIChJU19FUlIocnRjLT5tYXAp KQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihydGMtPm1hcCksICJyZWdt YXAgaW5pdCBmYWlsZWRcbiIpOwo+ICsKPiArCXJ0Yy0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShw ZGV2LCAwKTsKPiArCWlmIChydGMtPmlycSA8IDApCj4gKwkJcmV0dXJuIHJ0Yy0+aXJxOwo+ICsK PiArCXJ0Yy0+cnRjX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJvc2MiKTsKPiArCWlmIChJU19F UlIocnRjLT5ydGNfY2xrKSkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIo cnRjLT5ydGNfY2xrKSwKPiArCQkJCSAgICAgImZhaWxlZCB0byBmaW5kIHJ0YyBjbG9ja1xuIik7 Cj4gKwlpZiAoY2xrX2dldF9yYXRlKHJ0Yy0+cnRjX2NsaykgIT0gT1NDXzMySyAmJiBjbGtfZ2V0 X3JhdGUocnRjLT5ydGNfY2xrKSAhPSBPU0NfMjRNKQo+ICsJCXJldHVybiBkZXZfZXJyX3Byb2Jl KGRldiwgLUVJTlZBTCwgIkludmFsaWQgY2xvY2sgY29uZmlndXJhdGlvblxuIik7Cj4gKwo+ICsJ cnRjLT5zeXNfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoZGV2LCAic3lzIik7Cj4gKwlpZiAo SVNfRVJSKHJ0Yy0+c3lzX2NsaykpCj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJf RVJSKHJ0Yy0+c3lzX2NsayksCj4gKwkJCQkgICAgICJmYWlsZWQgdG8gZ2V0X2VuYWJsZSBydGMg c3lzIGNsa1xuIik7Cj4gKwlhbWxfcnRjX2luaXQocnRjKTsKPiArCj4gKwlkZXZpY2VfaW5pdF93 YWtldXAoZGV2LCAxKTsKPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHJ0Yyk7Cj4gKwo+ ICsJcnRjLT5ydGNfZGV2ID0gZGV2bV9ydGNfYWxsb2NhdGVfZGV2aWNlKGRldik7Cj4gKwlpZiAo SVNfRVJSKHJ0Yy0+cnRjX2RldikpIHsKPiArCQlyZXQgPSBQVFJfRVJSKHJ0Yy0+cnRjX2Rldik7 Cj4gKwkJZ290byBlcnJfY2xrOwo+ICsJfQo+ICsKPiArCXJldCA9IGRldm1fcmVxdWVzdF9pcnEo ZGV2LCBydGMtPmlycSwgYW1sX3J0Y19oYW5kbGVyLAo+ICsJCQkgICAgICAgSVJRRl9PTkVTSE9U LCAiYW1sLXJ0YyBhbGFybSIsIHJ0Yyk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vycl9wcm9i ZShkZXYsIHJldCwgIklSUSVkIHJlcXVlc3QgZmFpbGVkLCByZXQgPSAlZFxuIiwKPiArCQkJICAg ICAgcnRjLT5pcnEsIHJldCk7Cj4gKwkJZ290byBlcnJfY2xrOwo+ICsJfQo+ICsKPiArCXJ0Yy0+ cnRjX2Rldi0+b3BzID0gJmFtbF9ydGNfb3BzOwo+ICsJcnRjLT5ydGNfZGV2LT5yYW5nZV9taW4g PSAwOwo+ICsJcnRjLT5ydGNfZGV2LT5yYW5nZV9tYXggPSBVMzJfTUFYOwo+ICsKPiArCXJldCA9 IGRldm1fcnRjX3JlZ2lzdGVyX2RldmljZShydGMtPnJ0Y19kZXYpOwo+ICsJaWYgKHJldCkgewo+ ICsJCWRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgcmV0LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIFJU QyBkZXZpY2U6ICVkXG4iLCByZXQpOwo+ICsJCWdvdG8gZXJyX2NsazsKPiArCX0KPiArCj4gKwly ZXR1cm4gMDsKPiArZXJyX2NsazoKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShydGMtPnN5c19j bGspOwo+ICsJZGV2aWNlX2luaXRfd2FrZXVwKGRldiwgMCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsK PiArfQo+ICsKPiArc3RhdGljIGludCBhbWxfcnRjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2 KQo+ICt7Cj4gKwlzdHJ1Y3QgYW1sX3J0Y19kYXRhICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPiArCj4gKwlpZiAoZGV2aWNlX21heV93YWtldXAoZGV2KSkKPiArCQllbmFibGVfaXJxX3dh a2UocnRjLT5pcnEpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFt bF9ydGNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGFtbF9ydGNf ZGF0YSAqcnRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJaWYgKGRldmljZV9tYXlf d2FrZXVwKGRldikpCj4gKwkJZGlzYWJsZV9pcnFfd2FrZShydGMtPmlycSk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KCkJ1aWxkaW5nIHRoaXMsIGkgZ290OgoKZHJpdmVycy9ydGMvcnRjLWFtbG9n aWMtYTQuYzo0MDk6MTI6IGVycm9yOiDigJhhbWxfcnRjX3Jlc3VtZeKAmSBkZWZpbmVkIGJ1dCBu b3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtZnVuY3Rpb25dCiAgNDA5IHwgc3RhdGljIGludCBhbWxf cnRjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAgICAgIHwgICAgICAgICAgICBefn5+fn5+ fn5+fn5+fgpkcml2ZXJzL3J0Yy9ydGMtYW1sb2dpYy1hNC5jOjM5OToxMjogZXJyb3I6IOKAmGFt bF9ydGNfc3VzcGVuZOKAmSBkZWZpbmVkIGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtZnVu Y3Rpb25dCiAgMzk5IHwgc3RhdGljIGludCBhbWxfcnRjX3N1c3BlbmQoc3RydWN0IGRldmljZSAq ZGV2KQogICAgICB8ICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+CgoKPiArCj4gK3N0YXRpYyBT SU1QTEVfREVWX1BNX09QUyhhbWxfcnRjX3BtX29wcywKPiArCQkJIGFtbF9ydGNfc3VzcGVuZCwg YW1sX3J0Y19yZXN1bWUpOwo+ICsKPiArc3RhdGljIHZvaWQgYW1sX3J0Y19yZW1vdmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRj ID0gZGV2X2dldF9kcnZkYXRhKCZwZGV2LT5kZXYpOwo+ICsKPiArCS8qIGRpc2FibGUgUlRDICov Cj4gKwlyZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX0NUUkwsIFJUQ19FTkFCTEUsIDAp OwoKWW91IGNhbid0IGRvIHRoaXMsIHRoaXMgZGVmZWF0cyB0aGUgcHVycG9zZSBvZiB0aGUgUlRD LiBPbmNlIHN0YXJ0ZWQgYW4Kc2V0LCBpdCBtdXN0IG5vdCBiZSBzdG9wcGVkLgoKPiArCWNsa19k aXNhYmxlX3VucHJlcGFyZShydGMtPnN5c19jbGspOwo+ICsJZGV2aWNlX2luaXRfd2FrZXVwKCZw ZGV2LT5kZXYsIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFtbF9ydGNfY29u ZmlnIGE1X3J0Y19jb25maWcgPSB7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFt bF9ydGNfY29uZmlnIGE0X3J0Y19jb25maWcgPSB7Cj4gKwkuZ3JheV9zdG9yZWQgPSB0cnVlLAo+ ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYW1sX3J0Y19kZXZp Y2VfaWRbXSA9IHsKPiArCXsKPiArCQkuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLGE0LXJ0YyIsCj4g KwkJLmRhdGEgPSAmYTRfcnRjX2NvbmZpZywKPiArCX0sCj4gKwl7Cj4gKwkJLmNvbXBhdGlibGUg PSAiYW1sb2dpYyxhNS1ydGMiLAo+ICsJCS5kYXRhID0gJmE1X3J0Y19jb25maWcsCj4gKwl9LAo+ ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbWxfcnRjX2RldmljZV9pZCk7Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhbWxfcnRjX2RyaXZlciA9IHsKPiArCS5w cm9iZSA9IGFtbF9ydGNfcHJvYmUsCj4gKwkucmVtb3ZlID0gYW1sX3J0Y19yZW1vdmUsCj4gKwku ZHJpdmVyID0gewo+ICsJCS5uYW1lID0gImFtbC1ydGMiLAo+ICsJCS5wbSA9ICZhbWxfcnRjX3Bt X29wcywKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBhbWxfcnRjX2RldmljZV9pZCwKPiArCX0sCj4g K307Cj4gKwo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFtbF9ydGNfZHJpdmVyKTsKPiArTU9E VUxFX0RFU0NSSVBUSU9OKCJBbWxvZ2ljIFJUQyBkcml2ZXIiKTsKPiArTU9EVUxFX0FVVEhPUigi WWl0aW5nIERlbmcgPHlpdGluZy5kZW5nQGFtbG9naWMuY29tPiIpOwo+ICtNT0RVTEVfTElDRU5T RSgiR1BMIik7Cj4gCj4gLS0gCj4gMi4zNy4xCj4gCj4gCgotLSAKQWxleGFuZHJlIEJlbGxvbmks IGNvLW93bmVyIGFuZCBDT08sIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIEtlcm5lbCBlbmdp bmVlcmluZwpodHRwczovL2Jvb3RsaW4uY29tCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxv Z2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg==