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 C5B0DC44512 for ; Fri, 17 Jul 2026 02:38:26 +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=E11C2IW/IszGIuH+iXi3YlKbZv0Mfev01uhkhsuiHvo=; b=t+UWZnJMmGyatO m3jBLFZmPHFNsul8ayfsADiAvMGLbuBMLug1mIv6ZzLegMdh5Fna4KFRaIid+p6OuIXfzMYTXqIrq itRh0ojYwMf7G4LfrmzPoMVI+kfrndDpj0BMaIeyEXBA9joy32x8sx75bCus5Cfl31W4McxlZ084p 8fwmluDxZnIk+xVYQhgLWVfcjvtRL0hVqnGcSiUBPCnLluwvaYIXNwdxBOK/4goPyhn27/Oj1giCS EjrswBiRAm4s4PjWEX52AV+glrnd1qF0ifrsbslJ/IO+2AqrWkfjUBC8k/rXrAGO0bv1cmwDo2nNY tHeZcZsxwFR/oMwRL5xA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wkYT0-00000000yn4-1gXY; Fri, 17 Jul 2026 02:38:22 +0000 Received: from mail-m1010.netease.com ([154.81.10.10]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wkYSx-00000000ymO-2fU8; Fri, 17 Jul 2026 02:38:21 +0000 Received: from [172.16.12.74] (unknown [61.154.14.86]) by smtp.qiye.163.com (Hmail) with ESMTP id 46859c9bd; Fri, 17 Jul 2026 10:38:08 +0800 (GMT+08:00) Message-ID: Date: Fri, 17 Jul 2026 10:38:08 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 3/6] pwm: Add rockchip PWMv4 driver To: =?UTF-8?Q?Uwe_Kleine-K=C3=B6nig?= , Nicolas Frattaroli Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Lee Jones , William Breathitt Gray , kernel@collabora.com, Jonas Karlman , Alexey Charkov , linux-rockchip@lists.infradead.org, linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org References: <20260420-rk3576-pwm-v5-0-ae7cfbbe5427@collabora.com> <20260420-rk3576-pwm-v5-3-ae7cfbbe5427@collabora.com> Content-Language: en-US From: Damon Ding In-Reply-To: X-HM-Tid: 0a9f6df03d4603a8kunmde6ff62349f89 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWRgWCB1ZQUpXWS1ZQUlXWQ8JGhUIEh9ZQVlDHxpDVktOQ01PQ0lJGBpNGlYVFA kWGhdVEwETFhoSFyQUDg9ZV1kYEgtZQVlNSlVKTk9VSk9VQ01ZV1kWGg8SFR0UWUFZT0tIVUpLSU 9PT0hVSktLVUpCS0tZBg++ DKIM-Signature: a=rsa-sha256; b=XgfBY9TygDAgGW+TnQhdKri9XOCiteJldFJIFc92VlZOH4m4c8Hrv1MuWydsFFtdFO+0ihNUUH4V/uzVZrx3GNcsycjs/F7cIEOxM1QmBpvQSJKfgAWTtKZbKDUy4bb2SLkMb27wtSpy+GBP0okIG6SC13XlC9URiLwuQDHxgW4=; c=relaxed/relaxed; s=default; d=rock-chips.com; v=1; bh=4+trae873noI6M/KTwB+mA2F5xNHhg6Nh9ODu1W4DXc=; h=date:mime-version:subject:message-id:from; X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260716_193820_250092_9C3FA1A1 X-CRM114-Status: GOOD ( 28.78 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms 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-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgVXdlLAoKT24gNy8xMC8yMDI2IDc6MDIgUE0sIFV3ZSBLbGVpbmUtS8O2bmlnIHdyb3RlOgo+ IEhlbGxvIE5pY29sYXMsCj4gCj4gT24gTW9uLCBBcHIgMjAsIDIwMjYgYXQgMDM6NTI6NDBQTSAr MDIwMCwgTmljb2xhcyBGcmF0dGFyb2xpIHdyb3RlOgo+PiBbLi4uXQo+PiArLyoqCj4+ICsgKiBy b2NrY2hpcF9wd21fdjRfcm91bmRfc2luZ2xlIC0gY29udmVydCBhIFBXTSBwYXJhbWV0ZXIgdG8g aGFyZHdhcmUKPj4gKyAqIEByYXRlOiBjbG9jayByYXRlIG9mIHRoZSBQV00gY2xvY2ssIGFzIHBl ciBjbGtfZ2V0X3JhdGUKPj4gKyAqICAgICAgICBBc3N1bWVkIHRvIGJlIDw9IDFHSHogZm9yIG92 ZXJmbG93IGNvbnNpZGVyYXRpb25zCj4+ICsgKiBAaW5fdmFsOiBwYXJhbWV0ZXIgaW4gbmFub3Nl Y29uZHMgdG8gY29udmVydAo+PiArICoKPj4gKyAqIFJldHVybnMgdGhlIHJvdW5kZWQgdmFsdWUs IHNhdHVyYXRpbmcgYXQgVTMyX01BWCBpZiB0b28gbGFyZ2UKPj4gKyAqLwo+PiArc3RhdGljIHUz MiByb2NrY2hpcF9wd21fdjRfcm91bmRfc2luZ2xlKHVuc2lnbmVkIGxvbmcgcmF0ZSwgdTY0IGlu X3ZhbCkKPiAKPiB2ZXJ5IHBpY2t5OiBpZiB5b3UgbmFtZSB0aGlzIGZ1bmN0aW9uIHJvY2tjaGlw X3B3bV92NF9uc190b190aWNrcyBpdAo+IGJlY29tZXMgY2xlYXJlciB3aGF0IHRoZSBwdXJwb3Nl IGlzLgo+IAo+PiArewo+PiArCXU2NCB0bXA7Cj4+ICsKPj4gKwl0bXAgPSBtdWxfdTY0X3U2NF9k aXZfdTY0KHJhdGUsIGluX3ZhbCwgTlNFQ19QRVJfU0VDKTsKPj4gKwlpZiAodG1wID4gVTMyX01B WCkKPj4gKwkJdG1wID0gVTMyX01BWDsKPj4gKwo+PiArCXJldHVybiB0bXA7Cj4+ICt9Cj4+ICsK Pj4gKy8qKgo+PiArICogcm9ja2NoaXBfcHdtX3Y0X3JvdW5kX3BhcmFtcyAtIGNvbnZlcnQgUFdN IHBhcmFtZXRlcnMgdG8gaGFyZHdhcmUKPj4gKyAqIEByYXRlOiBQV00gY2xvY2sgcmF0ZSB0byBk byB0aGUgY2FsY3VsYXRpb25zIGF0Cj4+ICsgKiBAd2Y6IHBvaW50ZXIgdG8gdGhlIGdlbmVyaWMg JnN0cnVjdCBwd21fd2F2ZWZvcm0gaW5wdXQgcGFyYW1ldGVycwo+PiArICogQHdmaHc6IHBvaW50 ZXIgdG8gdGhlIGhhcmR3YXJlLXNwZWNpZmljICZzdHJ1Y3Qgcm9ja2NoaXBfcHdtX3Y0X3dmIG91 dHB1dAo+PiArICogICAgICAgIHBhcmFtZXRlcnMgdGhhdCB0aGUgcmVzdWx0cyB3aWxsIGJlIHN0 b3JlZCBpbgo+PiArICoKPj4gKyAqIENvbnZlcnQgbmFub3NlY29uZC1iYXNlZCBkdXR5L3Blcmlv ZC9vZmZzZXQgcGFyYW1ldGVycyB0byB0aGUgUFdNIGhhcmR3YXJlJ3MKPj4gKyAqIG5hdGl2ZSBy b3VuZGVkIHJlcHJlc2VudGF0aW9uIGluIG51bWJlciBvZiBjeWNsZXMgYXQgY2xvY2sgcmF0ZSBA cmF0ZS4gU2hvdWxkCj4+ICsgKiBhbnkgb2YgdGhlIGlucHV0IHBhcmFtZXRlcnMgYmUgb3V0IG9m IHJhbmdlIGZvciB0aGUgaGFyZHdhcmUsIHRoZQo+PiArICogY29ycmVzcG9uZGluZyBvdXRwdXQg cGFyYW1ldGVyIGlzIHRoZSBtYXhpbXVtIHBlcm1pc3NpYmxlIHZhbHVlIGZvciBzYWlkCj4+ICsg KiBwYXJhbWV0ZXIgd2l0aCBjb25zaWRlcmF0aW9ucyB0byB0aGUgb3RoZXJzLgo+PiArICovCj4+ ICtzdGF0aWMgdm9pZCByb2NrY2hpcF9wd21fdjRfcm91bmRfcGFyYW1zKHVuc2lnbmVkIGxvbmcg cmF0ZSwKPj4gKwkJCQkJIGNvbnN0IHN0cnVjdCBwd21fd2F2ZWZvcm0gKndmLAo+PiArCQkJCQkg c3RydWN0IHJvY2tjaGlwX3B3bV92NF93ZiAqd2ZodykKPj4gK3sKPj4gKwl3Zmh3LT5wZXJpb2Qg PSByb2NrY2hpcF9wd21fdjRfcm91bmRfc2luZ2xlKHJhdGUsIHdmLT5wZXJpb2RfbGVuZ3RoX25z KTsKPj4gKwo+PiArCXdmaHctPmR1dHkgPSByb2NrY2hpcF9wd21fdjRfcm91bmRfc2luZ2xlKHJh dGUsIHdmLT5kdXR5X2xlbmd0aF9ucyk7Cj4+ICsKPj4gKwkvKiBBcyBwZXIgVFJNLCBQV01fT0ZG U0VUOiAiVGhlIHZhbHVlIHJhbmdlcyBmcm9tIDAgdG8gKHBlcmlvZC1kdXR5KSIgKi8KPiAKPiBI YXZlIHlvdSB0cmllZCB3aGF0IGhhcHBlbnMgaWYgeW91IGJyZWFrIHRoaXMgcnVsZT8gVGhhdCBz ZWVtcyBsaWtlIGEKPiB2ZXJ5IGFyYml0cmFyeSByZXN0cmljdGlvbiB0aGF0IG1pZ2h0IGp1c3Qg b3JpZ2luYXRlIGZyb20gdGhlCj4gZG9jdW1lbnRhdGlvbiBhdXRob3IuCj4gCgpBY2NvcmRpbmcg dG8gdGhlIElDIGRlc2lnbiwgYW55IG9mZnNldCB2YWx1ZSBsYXJnZXIgdGhhbiAocGVyaW9kIC0g ZHV0eSkgCndpbGwgYmUgY2xhbXBlZCB0byAocGVyaW9kIC0gZHV0eSkgYnkgdGhlIGhhcmR3YXJl IGludGVybmFsbHkuIEdpdmVuIAp0aGlzIGhhcmR3YXJlIGxpbWl0YXRpb24sIHRoZSB2YWxpZGF0 aW9uIGNoZWNrIE5pY29sYXMgaW50cm9kdWNlZCBkb2VzIApzZXJ2ZSBhIHByYWN0aWNhbCBwdXJw b3NlLgoKPj4gKwl3Zmh3LT5vZmZzZXQgPSByb2NrY2hpcF9wd21fdjRfcm91bmRfc2luZ2xlKHJh dGUsIHdmLT5kdXR5X29mZnNldF9ucyk7Cj4+ICsJaWYgKCF3Zmh3LT5wZXJpb2QpIC8qIERvbid0 IHVuZGVyZmxvdyB3aGVuIHB3bSBkaXNhYmxlZCAqLwo+PiArCQl3Zmh3LT5vZmZzZXQgPSAwOwo+ PiArCWVsc2UgaWYgKHdmaHctPm9mZnNldCA+IHdmaHctPnBlcmlvZCAtIHdmaHctPmR1dHkpCj4+ ICsJCXdmaHctPm9mZnNldCA9IHdmaHctPnBlcmlvZCAtIHdmaHctPmR1dHk7Cj4gCj4gWW91IGRv bid0IGVuZm9yY2Ugd2Zody0+cGVyaW9kID49IHdmaHctPmR1dHksIHdoaWNoIGhvd2V2ZXIgc2Vl bXMgbGlrZSBhCj4gcmVhc29uYWJsZSByZXN0cmljdGlvbi4gV2hlbiBrbm93aW5nIHRoYXQgeW91 IGNhbiBkcm9wIHRoZSBleHBsaWNpdAo+IGNoZWNrIGZvciAhd2Zody0+cGVyaW9kIGFuZCBqdXN0 IGtlZXAgdGhlIGVsc2UtaWYgYnJhbmNoLgo+IAo+PiArfQo+PiBbLi4uXQo+PiArc3RhdGljIGlu dCByb2NrY2hpcF9wd21fdjRfd3JpdGVfd2Yoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3Qg cHdtX2RldmljZSAqcHdtLAo+PiArCQkJCSAgICBjb25zdCB2b2lkICpfd2ZodykKPj4gK3sKPj4g KwlzdHJ1Y3Qgcm9ja2NoaXBfcHdtX3Y0ICpwYyA9IHRvX3JvY2tjaGlwX3B3bV92NChjaGlwKTsK Pj4gKwljb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfcHdtX3Y0X3dmICp3Zmh3ID0gX3dmaHc7Cj4+ICsJ Ym9vbCB3YXNfZW5hYmxlZDsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJcmV0ID0gbWZwd21fYWNx dWlyZShwYy0+cHdtZik7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiAr CXdhc19lbmFibGVkID0gcm9ja2NoaXBfcHdtX3Y0X2lzX2VuYWJsZWQobWZwd21fcmVnX3JlYWQo cGMtPnB3bWYtPmJhc2UsCj4+ICsJCQkJCQkJCVBXTVY0X1JFR19FTkFCTEUpKTsKPj4gKwo+PiAr CS8qCj4+ICsJICogIkJ1dCBOaWNvbGFzIiwgeW91IGFzayB3aXRoIHZhbGlkIGNvbmNlcm5zLCAi d2h5IHdvdWxkIHlvdSBlbmFibGUgdGhlCj4+ICsJICogUFdNIGJlZm9yZSBzZXR0aW5nIGFsbCB0 aGUgcGFyYW1ldGVyIHJlZ2lzdGVycz8iCj4+ICsJICoKPj4gKwkgKiBFeGNlbGxlbnQgcXVlc3Rp b24sIE1yLiBSZWFkZXIgTS4gU3RyYXdtYW4hIFRoZSBSSzM1NzYgVFJNIFBhcnQgMQo+PiArCSAq IFNlY3Rpb24gMzQuNi4zIHNwZWNpZmllcyB0aGF0IHRoaXMgaXMgdGhlIGludGVuZGVkIG9yZGVy IG9mIHdyaXRlcy4KPj4gKwkgKiBEb2luZyB0aGUgUFdNX0VOIGFuZCBQV01fQ0xLX0VOIHdyaXRl cyBhZnRlciB0aGUgcGFyYW1zIGJ1dCBiZWZvcmUKPj4gKwkgKiB0aGUgQ1RSTF9VUERBVEVfRU4s IG9yIGV2ZW4gYWZ0ZXIgdGhlIENUUkxfVVBEQVRFX0VOLCByZXN1bHRzIGluCj4+ICsJICogZXJy YXRpYyBiZWhhdmlvdXIgd2hlcmUgcmVwZWF0ZWQgdHVybmluZyBvbiBhbmQgb2ZmIG9mIHRoZSBQ V00gbWF5Cj4+ICsJICogbm90IHR1cm4gaXQgb2ZmIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLiBU aGlzIGlzIGFsc28gd2h5IHdlIGRvbid0Cj4+ICsJICogdXNlIHJlbGF4ZWQgd3JpdGVzOyBpdCdz IG5vdCB3b3J0aCB0aGUgZm9vdGd1bi4KPiAKPiBJIHdvbmRlciBpZiBpdCdzIHdvcnRoIGhvd2V2 ZXIgdG8gZGVsYXkgc2V0dGluZyBQV01WNF9DVFJMX1VQREFURV9FTgo+IHVudGlsIGFmdGVyIHRo ZSBjbGtyYXRlIGlzIGhhbmRsZWQgdG8gKG1heWJlKSBwcmV2ZW50IGdsaXRjaGVzPwoKSSBhZ3Jl ZSB3aXRoIHlvdXIgcG9pbnQuIEZvciB0aGUgUFdNIGVuYWJsZSBzZXF1ZW5jZSwgd2Ugc2hvdWxk IGVuYWJsZSAKdGhlIFBXTSBkY2xrIGJlZm9yZSBhbnkgcmVnaXN0ZXIgb3BlcmF0aW9ucy4gQ29u dmVyc2VseSwgd2hlbiBkaXNhYmxpbmcgClBXTSwgaXQncyBiZXR0ZXIgdG8gY2Fycnkgb3V0IGRj bGsgZGlzYWJsaW5nIG9ubHkgYWZ0ZXIgYWxsIHJlZ2lzdGVyIAphY2Nlc3NlcyBhcmUgZnVsbHkg Y29tcGxldGVkLgoKPiAKPj4gKwkgKi8KPj4gKwlpZiAod2Zody0+cmF0ZSkKPj4gKwkJbWZwd21f cmVnX3dyaXRlKHBjLT5wd21mLT5iYXNlLCBQV01WNF9SRUdfRU5BQkxFLAo+PiArCQkJCUZJRUxE X1BSRVBfV00xNihQV01WNF9FTl9CT1RIX01BU0ssCj4+ICsJCQkJCQlQV01WNF9FTl9CT1RIX01B U0spKTsKPj4gKwllbHNlCj4+ICsJCW1mcHdtX3JlZ193cml0ZShwYy0+cHdtZi0+YmFzZSwgUFdN VjRfUkVHX0VOQUJMRSwKPj4gKwkJCQlGSUVMRF9QUkVQX1dNMTYoUFdNVjRfRU5fQk9USF9NQVNL LCAwKSk7Cj4+ICsKPj4gKwltZnB3bV9yZWdfd3JpdGUocGMtPnB3bWYtPmJhc2UsIFBXTVY0X1JF R19QRVJJT0QsIHdmaHctPnBlcmlvZCk7Cj4+ICsJbWZwd21fcmVnX3dyaXRlKHBjLT5wd21mLT5i YXNlLCBQV01WNF9SRUdfRFVUWSwgd2Zody0+ZHV0eSk7Cj4+ICsJbWZwd21fcmVnX3dyaXRlKHBj LT5wd21mLT5iYXNlLCBQV01WNF9SRUdfT0ZGU0VULCB3Zmh3LT5vZmZzZXQpOwo+PiArCj4+ICsJ bWZwd21fcmVnX3dyaXRlKHBjLT5wd21mLT5iYXNlLCBQV01WNF9SRUdfQ1RSTCwgUFdNVjRfQ1RS TF9DT05UX0ZMQUdTKTsKPj4gKwo+PiArCS8qIENvbW1pdCBuZXcgY29uZmlndXJhdGlvbiB0byBo YXJkd2FyZSBvdXRwdXQuICovCj4+ICsJbWZwd21fcmVnX3dyaXRlKHBjLT5wd21mLT5iYXNlLCBQ V01WNF9SRUdfRU5BQkxFLAo+PiArCQkJUFdNVjRfQ1RSTF9VUERBVEVfRU4pOwo+PiArCj4+ICsJ aWYgKHdmaHctPnJhdGUpIHsKPj4gKwkJaWYgKCF3YXNfZW5hYmxlZCkgewo+PiArCQkJZGV2X2Ri ZygmY2hpcC0+ZGV2LCAiRW5hYmxpbmcgUFdNIG91dHB1dFxuIik7Cj4+ICsJCQlyZXQgPSBjbGtf ZW5hYmxlKHBjLT5wd21mLT5jb3JlKTsKPj4gKwkJCWlmIChyZXQpCj4+ICsJCQkJZ290byBlcnJf bWZwd21fcmVsZWFzZTsKPj4gKwkJCXJldCA9IGNsa19zZXRfcmF0ZV9leGNsdXNpdmUocGMtPnB3 bWYtPmNvcmUsIHdmaHctPnJhdGUpOwo+PiArCQkJaWYgKHJldCkgewo+PiArCQkJCWNsa19kaXNh YmxlKHBjLT5wd21mLT5jb3JlKTsKPj4gKwkJCQlnb3RvIGVycl9tZnB3bV9yZWxlYXNlOwo+PiAr CQkJfQo+PiArCj4+ICsJCQkvKgo+PiArCQkJICogT3V0cHV0IHNob3VsZCBiZSBvbiBub3csIGFj cXVpcmUgZGV2aWNlIHRvIGd1YXJhbnRlZQo+PiArCQkJICogZXhjbHVzaW9uIHdpdGggb3RoZXIg ZGV2aWNlIGZ1bmN0aW9ucyB3aGlsZSBpdCdzIG9uLgo+PiArCQkJICoKPj4gKwkJCSAqIEl0J3Mg aGlnaGx5IHVubGlrZWx5IHRoYXQgdGhpcyBmYWlscywgYXMgbWZwd20gaGFzCj4+ICsJCQkgKiBh bHJlYWR5IGJlZW4gYWNxdWlyZWQgYmVmb3JlLCBhbmQgdGhpcyBpcyBqdXN0IGEKPj4gKwkJCSAq IHVzYWdlIGNvdW50ZXIgaW5jcmVhc2UuIE5vdCB3b3J0aCB0aGUgYWRkZWQKPj4gKwkJCSAqIGNv bXBsZXhpdHkgb2YgY2xlYXJpbmcgdGhlIFBXTVY0X1JFR19FTkFCTEUgYWdhaW4sCj4+ICsJCQkg KiBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBDVFJMX1VQREFURV9FTiBiZWhhdmlvdXIuCj4+ ICsJCQkgKi8KPj4gKwkJCXJldCA9IG1mcHdtX2FjcXVpcmUocGMtPnB3bWYpOwo+PiArCQkJaWYg KHJldCkgewo+PiArCQkJCWNsa19yYXRlX2V4Y2x1c2l2ZV9wdXQocGMtPnB3bWYtPmNvcmUpOwo+ PiArCQkJCWNsa19kaXNhYmxlKHBjLT5wd21mLT5jb3JlKTsKPj4gKwkJCQlnb3RvIGVycl9tZnB3 bV9yZWxlYXNlOwo+PiArCQkJfQo+PiArCQl9Cj4gCj4gQ2FuIGl0IGhhcHBlbiB0aGF0IHdlIGhh dmUKPiAKPiAJd2Zody0+cmF0ZSAmJiB3YXNfZW5hYmxlZCAmJiB3Zmh3LT5yYXRlICE9IGNsa19n ZXRfcmF0ZSgpCj4gCj4gPwo+IAo+PiArCX0gZWxzZSBpZiAod2FzX2VuYWJsZWQpIHsKPj4gKwkJ ZGV2X2RiZygmY2hpcC0+ZGV2LCAiRGlzYWJsaW5nIFBXTSBvdXRwdXRcbiIpOwo+PiArCQljbGtf cmF0ZV9leGNsdXNpdmVfcHV0KHBjLT5wd21mLT5jb3JlKTsKPj4gKwkJY2xrX2Rpc2FibGUocGMt PnB3bWYtPmNvcmUpOwo+PiArCQkvKiBPdXRwdXQgaXMgb2ZmIG5vdywgZXh0cmEgcmVsZWFzZSB0 byBiYWxhbmNlIGV4dHJhIGFjcXVpcmUgKi8KPj4gKwkJbWZwd21fcmVsZWFzZShwYy0+cHdtZik7 Cj4+ICsJfQo+PiArCj4+ICtlcnJfbWZwd21fcmVsZWFzZToKPj4gKwltZnB3bV9yZWxlYXNlKHBj LT5wd21mKTsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+IFsuLi5dCj4+ICtzdGF0aWMg aW50IHJvY2tjaGlwX3B3bV92NF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ PiArewo+PiArCXN0cnVjdCByb2NrY2hpcF9tZnB3bV9mdW5jICpwd21mID0gZGV2X2dldF9wbGF0 ZGF0YSgmcGRldi0+ZGV2KTsKPj4gKwlzdHJ1Y3Qgcm9ja2NoaXBfcHdtX3Y0ICpwYzsKPj4gKwlz dHJ1Y3QgcHdtX2NoaXAgKmNoaXA7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRl djsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJLyoKPj4gKwkgKiBGb3IgcmVmZXJlbmNpbmcgdGhl IFBXTSBpbiB0aGUgRFQgdG8gd29yaywgd2UgbmVlZCB0aGUgcGFyZW50IE1GRAo+PiArCSAqIGRl dmljZSdzIE9GIG5vZGUuCj4+ICsJICovCj4+ICsJZGV2LT5vZl9ub2RlX3JldXNlZCA9IHRydWU7 Cj4+ICsJZGV2aWNlX3NldF9ub2RlKGRldiwgb2ZfZndub2RlX2hhbmRsZShkZXYtPnBhcmVudC0+ b2Zfbm9kZSkpOwo+PiArCj4+ICsJY2hpcCA9IGRldm1fcHdtY2hpcF9hbGxvYyhkZXYsIDEsIHNp emVvZigqcGMpKTsKPj4gKwlpZiAoSVNfRVJSKGNoaXApKQo+PiArCQlyZXR1cm4gUFRSX0VSUihj aGlwKTsKPj4gKwo+PiArCXBjID0gdG9fcm9ja2NoaXBfcHdtX3Y0KGNoaXApOwo+PiArCXBjLT5w d21mID0gcHdtZjsKPj4gKwo+PiArCXJldCA9IG1mcHdtX2FjcXVpcmUocHdtZik7Cj4+ICsJaWYg KHJldCkKPj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJDb3VsZG4ndCBhY3F1 aXJlIG1mcHdtIGluIHByb2JlXG4iKTsKPj4gKwo+PiArCWlmICghcm9ja2NoaXBfcHdtX3Y0X29u X2FuZF9jb250aW51b3VzKHBjKSkKPj4gKwkJbWZwd21fcmVsZWFzZShwd21mKTsKPj4gKwllbHNl IHsKPj4gKwkJZGV2X2RiZyhkZXYsICJQV00gd2FzIGFscmVhZHkgb24gYXQgcHJvYmUgdGltZVxu Iik7Cj4+ICsJCXJldCA9IGNsa19lbmFibGUocHdtZi0+Y29yZSk7Cj4+ICsJCWlmIChyZXQpIHsK Pj4gKwkJCWRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJFbmFibGluZyBwd20gY2xvY2sgZmFpbGVk XG4iKTsKPj4gKwkJCWdvdG8gZXJyX21mcHdtX3JlbGVhc2U7Cj4+ICsJCX0KPj4gKwkJcmV0ID0g Y2xrX3JhdGVfZXhjbHVzaXZlX2dldChwYy0+cHdtZi0+Y29yZSk7Cj4+ICsJCWlmIChyZXQpIHsK Pj4gKwkJCWRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJQcm90ZWN0aW5nIHB3bSBjbG9jayBmYWls ZWRcbiIpOwo+PiArCQkJZ290byBlcnJfY2xrX2Rpc2FibGU7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsK Pj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjaGlwKTsKPiAKPiBUaGlzIGlzIHVudXNl ZC4KPiAKPj4gKwo+PiArCWNoaXAtPm9wcyA9ICZyb2NrY2hpcF9wd21fdjRfb3BzOwo+PiArCj4+ ICsJcmV0ID0gZGV2bV9wd21jaGlwX2FkZChkZXYsIGNoaXApOwo+PiArCWlmIChyZXQpIHsKPj4g KwkJZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZhaWxlZCB0byBhZGQgUFdNIGNoaXBcbiIpOwo+ PiArCQlpZiAocm9ja2NoaXBfcHdtX3Y0X29uX2FuZF9jb250aW51b3VzKHBjKSkKPj4gKwkJCWdv dG8gZXJyX3JhdGVfcHV0Owo+PiArCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiArCj4+ICsJ cmV0dXJuIDA7Cj4+ICsKPj4gK2Vycl9yYXRlX3B1dDoKPj4gKwljbGtfcmF0ZV9leGNsdXNpdmVf cHV0KHB3bWYtPmNvcmUpOwo+PiArZXJyX2Nsa19kaXNhYmxlOgo+PiArCWNsa19kaXNhYmxlKHB3 bWYtPmNvcmUpOwo+PiArZXJyX21mcHdtX3JlbGVhc2U6Cj4+ICsJbWZwd21fcmVsZWFzZShwd21m KTsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4gCj4gQmVzdCByZWdhcmRzCj4gVXdlCgpC ZXN0IHJlZ2FyZHMsCkRhbW9uCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1yb2NrY2hpcAo=