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 72704C64EC4 for ; Wed, 8 Mar 2023 13:32:17 +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=t2kp3CR3jVmIk8neKeJ/k2LUTneWAHHFB3W+Vu0Co+s=; b=TsvxoseZ5Hn5dz YKSKu/ucbGhqOQHN74jKA/1XGakU1TdopeDLv2LiRvJ8xZgTDNsY8zzPklFWrdR4yd9k1gPguUhKF MgUhWG1QnWoFpRoGWSZ91kt2a9WxTO/YqTL7TjiD4LPUJkrcuQyD+wUg4/jKIE/LwnfFBXge93p1Y 9kFv07qIK+lEbu9yzzRAP223XgKFisKFyaj94dLPOXooxZzNaswCdzgFzGIUjvJMKUoOIF6FceChI SlcyM90E4tJMI6FbSSwi/UXW/hrjoBUIFTVP2s8gySVTtsAhZnbCx2C7Ab6pFq3/S+2/15DM7BRBR tiYRlaxPKRIkyGhEwE8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pZtt2-005D9q-Pg; Wed, 08 Mar 2023 13:31:20 +0000 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pZtsz-005D8G-Lx for linux-arm-kernel@lists.infradead.org; Wed, 08 Mar 2023 13:31:19 +0000 Received: by mail-wr1-x42a.google.com with SMTP id h11so15363398wrm.5 for ; Wed, 08 Mar 2023 05:31:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1678282275; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=tcs+oZ8Ti0MefEj+f00/ORib4j1MEGcYHaRo1YTx8vQ=; b=uMORQYJTqb7eF+TS+OXUnvGZtemx2Gmei0dGIW+WS7sSdQNWx6CYu2YSur7gZ7UUZe dgjVvgHIe9wrTxtDLDc87XXjrUs1sTFvERIYaF4dSP7NUP4E97AHGTBwAzcrfmyLR28x 2DUIcUYsYAc6Aj+QB3hsJtzAbv0Ex92QNRvv/HF3jbZEmjyFb0TarmYJmU7Aha/zIgK9 NJBVEM9oCehdwPcTzxCQTxWJPUDv3ULDAwf+YcJMh54Z+ZWVteE+lD7Ccrp+J+aORgkE HlKq/dJBsiNxkFXfbCay2W2Et5VX6jHi0G0DlFT2cfabz5kg8G0PEApfuqh9ggVtunB3 hrIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678282275; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tcs+oZ8Ti0MefEj+f00/ORib4j1MEGcYHaRo1YTx8vQ=; b=ZZemiFpvIeld8NmA7YhjI02hDIP5TbXzsMvRZ+0y+trShoIBCV88fUho75jeArU+gG 3+mH2/RkIsQdjTr0eUWTigltiwXwTg5i3LBNbIPAUyKAagsX+fDUBNloOvjB9Xp5s1XM NIKy+JNfZiVa3T7F8ATLaL+FshZbK7oERE+ch0ubZ4OCkZ+8vClWBkZLIJ+uy/0GmZre UYA5YVd1RD2/fZabHThLYAeF7Gx/KflWOweIH/oYScEWxjh3CuAoa5x5kEYgkoMhHV02 wSFckBaNfzpHPBxojnaasbvCkEF1Cv4kbjS9zskqnWoaxbEOEEXVp2pECsWAPYhl6g92 PYjw== X-Gm-Message-State: AO0yUKVVdqqlboVSXXP72rPuFkV1OsGsoqTsIkrr70RvrIxXE5dZR+Ck Gs+jIIJjHYOl0DEnpwm5Ptv5bA== X-Google-Smtp-Source: AK7set/NX5HlxdOngMNTFnb0EPlr+0JwIwMOaiZ9ppB69TodBmpVecSoCUT3wDixITtN85Dj4zLXfg== X-Received: by 2002:a5d:6b10:0:b0:2cc:4e58:f6d0 with SMTP id v16-20020a5d6b10000000b002cc4e58f6d0mr10220801wrw.54.1678282275334; Wed, 08 Mar 2023 05:31:15 -0800 (PST) Received: from [192.168.1.195] ([5.133.47.210]) by smtp.googlemail.com with ESMTPSA id m16-20020a056000009000b002be099f78c0sm15313823wrx.69.2023.03.08.05.31.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 08 Mar 2023 05:31:14 -0800 (PST) Message-ID: <7853ff04-02cf-9430-d84a-c8fe8b1d6725@linaro.org> Date: Wed, 8 Mar 2023 13:31:13 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH V4 2/2] nvmem: add generic driver for devices with MMIO access Content-Language: en-US To: =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= , Rob Herring , Krzysztof Kozlowski Cc: Matthias Brugger , Kunihiko Hayashi , Masami Hiramatsu , linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= References: <20230228072936.1108-1-zajec5@gmail.com> <20230228072936.1108-3-zajec5@gmail.com> From: Srinivas Kandagatla In-Reply-To: <20230228072936.1108-3-zajec5@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230308_053117_751927_BFEF83FE X-CRM114-Status: GOOD ( 43.56 ) 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 SGkgUmFmYcWCLAoKClRoYW5rcyBmb3IgZG9pbmcgdGhpcywKCk9uIDI4LzAyLzIwMjMgMDc6Mjks IFJhZmHFgiBNacWCZWNraSB3cm90ZToKPiBGcm9tOiBSYWZhxYIgTWnFgmVja2kgPHJhZmFsQG1p bGVja2kucGw+Cj4gCj4gU29tZSBOVk1FTSBkZXZpY2VzIGNhbiBiZSBhY2Nlc3NlZCBieSBzaW1w bHkgbWFwcGluZyBtZW1vcnkgYW5kIHJlYWRpbmcKPiBmcm9tIC8gd3JpdGluZyB0byBpdC4gVGhp cyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBhIGdlbmVyaWMKPiAibW1pby1udm1lbSIgRFQgYmlu ZGluZyB1c2VkIGJ5IHN1Y2ggZGV2aWNlcy4KPiAKPiBPbmUgb2Ygc3VjaCBkZXZpY2VzIGlzIEJy b2FkY29tJ3MgTlZSQU0uIEl0J3MgYWxyZWFkeSBzdXBwb3J0ZWQgKHNlZQo+IE5WTUVNX0JSQ01f TlZSQU0pIGJ1dCBleGlzdGluZyBkcml2ZXIgY292ZXJzIGJvdGg6CgpXaGF0IHdpbGwgaGFwcGVu IHRvIHRoZSBvbGQgImJyY20sbnZyYW0iIGNvbXBhdGlibGUgYW5kIHRoZSBkdCBmaXJtd2FyZSAK dGhhdCBhbHJlYWR5IGhhdmUgdGhpcyBub2RlPwoKCklmIHRoZXJlIGlzIG9ubHkgb25lIHVzZXIg Zm9yIHRoaXMgdGhlbiBvbmUgd291bGQgb2JqZWN0IHRoYXQgd2h5IGRvIHdlIApuZWVkIHRoaXMg RFQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gdG8gc3RhcnQgd2l0aD8KSWYgdGhpcyBpcyBub3QgdGhl IGNhc2UgcGxlYXNlIGNvbnNpZGVyIGFkZGluZyB0aG9zZSBwYXRjaGVzIHRvIHRoaXMgc2VyaWVz LgoKCj4gMS4gTlZNRU0gZGV2aWNlIGFjY2Vzcwo+IDIuIE5WTUVNIGNvbnRlbnQgcGFyc2luZwo+ IAo+IE9uY2Ugd2UgZ2V0IHN1cHBvcnQgZm9yIE5WTUVNIGxheW91dHMgdGhlbiBleGlzdGluZyBO VlJBTSBkcml2ZXIgd2lsbAo+IGdldCBjb252ZXJ0ZWQgaW50byBhIGxheW91dCBhbmQgZ2VuZXJp YyBkcml2ZXIgd2lsbCB0YWtlIG92ZXIKPiByZXNwb25zaWJpbGl0eSBmb3IgZGF0YSBhY2Nlc3Mu Cj4KCkV2ZW4gdGhvdWdoIHRoaXMgc2VyaWVzIGlzIHNpbXBsZSwgYnV0IGl0IGlzIHJlYWxseSBj b25mdXNpbmcgZm9yIHR3byAKcmVhc29ucy4KCjE+IEdlbmVyaWMgbW1pbyBudm1lbSBiaW5kaW5n cyBhcmUgaW5jb21wbGV0ZSBhbmQgcG90ZW50aWFsbHkgCmNoYW5nZS9ldm9sdmUgb24gZXZlcnkg bmV3IHVzZXIuIEV4IGNsa3MsIHJlZ3VsYXRvcnMsIGVuZGlhbmVzcyAuLi4gU28gCml0IGxvb2tz IHJlYWxseSBmcmFnaWxlIGFuZCBpbmNvbXBsZXRlIHRvIG1lIGFzIGEgZ2VuZXJpYyBiaW5kaW5n cy4KSXMgdGhpcyB3YW50IHlvdSBhcmUgZXhwZWN0aW5nPwoKCjI+IEFzIHlvdSBtZW50aW9uZWQg dGhhdCB0aGlzIHdpbGwgcmVwbGFjZSBicm9hZGNvbSBOVk1SQU0sIGJ1dCB0aGlzIApwYXRjaCBk b2VzIG5vdGhpbmcgaW4gcmVsYXRpb24gdG8gdXBkYXRpbmcgdGhhdCBkcml2ZXIsIHNvIHRoZSBj b2RlIGlzIApkZWFkIGFzIGl0IGlzLiBJZiB5b3UgYXJlIGNvbnNpZGVyaW5nIHRvIHVzZSBpdCBm b3IgQnJvYWRjb20gTlZNUkFNLCAKcGxlYXNlIGFkZCB0aG9zZSBwYXRjaGVzIHRvIHRoaXMgc2Vy aWVzIHNvIHRoYXQgd2UgY291bGQgc2VlIHRoZSByZWFsIAp1c2VyIGZvciB0aGlzIGNvZGUuCgot LXNyaW5pCgo+IFNpZ25lZC1vZmYtYnk6IFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5w bD4KPiAtLS0KPiBWMzogU3VwcG9ydCAicmVnLWlvLXdpZHRoIiwgYmFzaWMgd3JpdGluZyAmICJi cmNtLG52cmFtIiBzdHJpbmcKPiBWMzogRG9uJ3QgZHVwbGljYXRlIGNvcmUgY2hlY2tzLCBhZGQg NjQgYiBzdXBwb3J0LCBjb21wbGV0ZSB3cml0aW5nCj4gICAgICBzdXBwb3J0LCBkb24ndCBhZGQg Y29uZnVzaW5nIGNvbmRpdGlvbmFsICJicmNtLG52cmFtIiBzdXBwb3J0IChpdAo+ICAgICAgd2ls bCBiZSBoYW5kbGVkIHdpdGggbGF5b3V0cyBtaWdyYXRpb24pCj4gLS0tCj4gICBkcml2ZXJzL252 bWVtL0tjb25maWcgIHwgIDEwICsrKwo+ICAgZHJpdmVycy9udm1lbS9NYWtlZmlsZSB8ICAgMiAr Cj4gICBkcml2ZXJzL252bWVtL21taW8uYyAgIHwgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCsp Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9udm1lbS9tbWlvLmMKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9udm1lbS9LY29uZmlnIGIvZHJpdmVycy9udm1lbS9LY29uZmlnCj4gaW5k ZXggNmRlYzM4ODA1MDQxLi4xODllYTg1YmQ2N2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9udm1l bS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9udm1lbS9LY29uZmlnCj4gQEAgLTE2Niw2ICsxNjYs MTYgQEAgY29uZmlnIE5WTUVNX01JQ1JPQ0hJUF9PVFBDCj4gICAJICBUaGlzIGRyaXZlciBlbmFi bGUgdGhlIE9UUCBjb250cm9sbGVyIGF2YWlsYWJsZSBvbiBNaWNyb2NoaXAgU0FNQTdHNQo+ICAg CSAgU29Dcy4gSXQgY29udHJvbHMgdGhlIGFjY2VzcyB0byB0aGUgT1RQIG1lbW9yeSBjb25uZWN0 ZWQgdG8gaXQuCj4gICAKPiArY29uZmlnIE5WTUVNX01NSU8KPiArCXRyaXN0YXRlICJNTUlPIGFj Y2VzcyBiYXNlZCBOVk1FTSBzdXBwb3J0Igo+ICsJZGVwZW5kcyBvbiBIQVNfSU9NRU0KPiArCWhl bHAKPiArCSAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgc3VwcG9ydCBmb3IgTlZNRU0gZGV2aWNlcyB0 aGF0IGNhbiBiZSBhY2Nlc3NlZAo+ICsJICB1c2luZyBNTUlPLgo+ICsKPiArCSAgVGhpcyBkcml2 ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlCj4gKwkg IHdpbGwgYmUgY2FsbGVkIG52bWVtLW1taW8uCj4gKwo+ICAgY29uZmlnIE5WTUVNX01US19FRlVT RQo+ICAgCXRyaXN0YXRlICJNZWRpYXRlayBTb0NzIEVGVVNFIHN1cHBvcnQiCj4gICAJZGVwZW5k cyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L252bWVtL01ha2VmaWxlIGIvZHJpdmVycy9udm1lbS9NYWtlZmlsZQo+IGluZGV4IDZhMWVmZmZh ODhmMC4uNzY3YTlkYjJiZmMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbnZtZW0vTWFrZWZpbGUK PiArKysgYi9kcml2ZXJzL252bWVtL01ha2VmaWxlCj4gQEAgLTM1LDYgKzM1LDggQEAgb2JqLSQo Q09ORklHX05WTUVNX01FU09OX01YX0VGVVNFKQkrPSBudm1lbV9tZXNvbl9teF9lZnVzZS5vCj4g ICBudm1lbV9tZXNvbl9teF9lZnVzZS15CQkJOj0gbWVzb24tbXgtZWZ1c2Uubwo+ICAgb2JqLSQo Q09ORklHX05WTUVNX01JQ1JPQ0hJUF9PVFBDKQkrPSBudm1lbS1taWNyb2NoaXAtb3RwYy5vCj4g ICBudm1lbS1taWNyb2NoaXAtb3RwYy15CQkJOj0gbWljcm9jaGlwLW90cGMubwo+ICtvYmotJChD T05GSUdfTlZNRU1fTU1JTykJCSs9IG52bWVtLW1taW8ubwo+ICtudm1lbS1tbWlvLXkJCQkJOj0g bW1pby5vCj4gICBvYmotJChDT05GSUdfTlZNRU1fTVRLX0VGVVNFKQkJKz0gbnZtZW1fbXRrLWVm dXNlLm8KPiAgIG52bWVtX210ay1lZnVzZS15CQkJOj0gbXRrLWVmdXNlLm8KPiAgIG9iai0kKENP TkZJR19OVk1FTV9NWFNfT0NPVFApCQkrPSBudm1lbS1teHMtb2NvdHAubwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL252bWVtL21taW8uYyBiL2RyaXZlcnMvbnZtZW0vbW1pby5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmNlNTE2NDhiYjMyMQo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL252bWVtL21taW8uYwo+IEBAIC0wLDAgKzEsMTQ4IEBACj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiArLyoKPiArICogQ29w eXJpZ2h0IChDKSAyMDIzIFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KPiArICov Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZF9kZXZp Y2V0YWJsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9udm1lbS1wcm92aWRlci5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcHJvcGVydHkuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArCj4gK3N0cnVjdCBtbWlvX252bWVtIHsKPiAr CXZvaWQgX19pb21lbSAqYmFzZTsKPiArCXUzMiBpb193aWR0aDsKPiArfTsKPiArCj4gK3N0YXRp YyBpbnQgbW1pb19udm1lbV9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCBvZmZzZXQs IHZvaWQgKnZhbCwgc2l6ZV90IGJ5dGVzKQo+ICt7Cj4gKwlzdHJ1Y3QgbW1pb19udm1lbSAqcHJp diA9IGNvbnRleHQ7Cj4gKwl1NjQgX19tYXliZV91bnVzZWQgKmRzdDY0Owo+ICsJdTMyICpkc3Qz MjsKPiArCXUxNiAqZHN0MTY7Cj4gKwl1OCAqZHN0ODsKPiArCj4gKwlzd2l0Y2ggKHByaXYtPmlv X3dpZHRoKSB7Cj4gKwljYXNlIDA6Cj4gKwkJbWVtY3B5X2Zyb21pbyh2YWwsIHByaXYtPmJhc2Ug KyBvZmZzZXQsIGJ5dGVzKTsKPiArCQlicmVhazsKPiArCWNhc2UgMToKPiArCQlmb3IgKGRzdDgg PSB2YWw7IGJ5dGVzOyBieXRlcyAtPSAxLCBvZmZzZXQgKz0gMSkKPiArCQkJKmRzdDgrKyA9IHJl YWRiKHByaXYtPmJhc2UgKyBvZmZzZXQpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAyOgo+ICsJCWZv ciAoZHN0MTYgPSB2YWw7IGJ5dGVzOyBieXRlcyAtPSAyLCBvZmZzZXQgKz0gMikKPiArCQkJKmRz dDE2KysgPSByZWFkdyhwcml2LT5iYXNlICsgb2Zmc2V0KTsKPiArCQlicmVhazsKPiArCWNhc2Ug NDoKPiArCQlmb3IgKGRzdDMyID0gdmFsOyBieXRlczsgYnl0ZXMgLT0gNCwgb2Zmc2V0ICs9IDQp Cj4gKwkJCSpkc3QzMisrID0gcmVhZGwocHJpdi0+YmFzZSArIG9mZnNldCk7Cj4gKwkJYnJlYWs7 Cj4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPiArCWNhc2UgODoKPiArCQlmb3IgKGRzdDY0ID0gdmFs OyBieXRlczsgYnl0ZXMgLT0gOCwgb2Zmc2V0ICs9IDgpCj4gKwkJCSpkc3Q2NCsrID0gcmVhZHEo cHJpdi0+YmFzZSArIG9mZnNldCk7Cj4gKwkJYnJlYWs7Cj4gKyNlbmRpZgo+ICsJZGVmYXVsdDoK PiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIGludCBtbWlvX252bWVtX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCBv ZmZzZXQsIHZvaWQgKnZhbCwgc2l6ZV90IGJ5dGVzKQo+ICt7Cj4gKwlzdHJ1Y3QgbW1pb19udm1l bSAqcHJpdiA9IGNvbnRleHQ7Cj4gKwl1NjQgX19tYXliZV91bnVzZWQgKmRzdDY0Owo+ICsJdTMy ICpkc3QzMjsKPiArCXUxNiAqZHN0MTY7Cj4gKwl1OCAqZHN0ODsKPiArCj4gKwlzd2l0Y2ggKHBy aXYtPmlvX3dpZHRoKSB7Cj4gKwljYXNlIDA6Cj4gKwkJbWVtY3B5X3RvaW8ocHJpdi0+YmFzZSAr IG9mZnNldCwgdmFsLCBieXRlcyk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDE6Cj4gKwkJZm9yIChk c3Q4ID0gdmFsOyBieXRlczsgYnl0ZXMgLT0gMSwgb2Zmc2V0ICs9IDEpCj4gKwkJCXdyaXRlYigq ZHN0OCsrLCBwcml2LT5iYXNlICsgb2Zmc2V0KTsKPiArCQlicmVhazsKPiArCWNhc2UgMjoKPiAr CQlmb3IgKGRzdDE2ID0gdmFsOyBieXRlczsgYnl0ZXMgLT0gMiwgb2Zmc2V0ICs9IDIpCj4gKwkJ CXdyaXRldygqZHN0MTYrKywgcHJpdi0+YmFzZSArIG9mZnNldCk7Cj4gKwkJYnJlYWs7Cj4gKwlj YXNlIDQ6Cj4gKwkJZm9yIChkc3QzMiA9IHZhbDsgYnl0ZXM7IGJ5dGVzIC09IDQsIG9mZnNldCAr PSA0KQo+ICsJCQl3cml0ZWwoKmRzdDMyKyssIHByaXYtPmJhc2UgKyBvZmZzZXQpOwo+ICsJCWJy ZWFrOwo+ICsjaWZkZWYgQ09ORklHXzY0QklUCj4gKwljYXNlIDg6Cj4gKwkJZm9yIChkc3Q2NCA9 IHZhbDsgYnl0ZXM7IGJ5dGVzIC09IDgsIG9mZnNldCArPSA4KQo+ICsJCQl3cml0ZXEoKmRzdDY0 KyssIHByaXYtPmJhc2UgKyBvZmZzZXQpOwo+ICsJCWJyZWFrOwo+ICsjZW5kaWYKPiArCWRlZmF1 bHQ6Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgbW1pb19udm1lbV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgbnZtZW1fY29uZmlnIGNvbmZpZyA9IHsKPiArCQkubmFtZSA9 ICJtbWlvLW52bWVtIiwKPiArCQkuaWQgPSBOVk1FTV9ERVZJRF9BVVRPLAo+ICsJCS5yZWFkX29u bHkgPSB0cnVlLAo+ICsJCS5yZWdfcmVhZCA9IG1taW9fbnZtZW1fcmVhZCwKPiArCQkucmVnX3dy aXRlID0gbW1pb19udm1lbV93cml0ZSwKPiArCX07Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm cGRldi0+ZGV2Owo+ICsJc3RydWN0IG1taW9fbnZtZW0gKnByaXY7Cj4gKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnJlczsKPiArCj4gKwlwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwg R0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXByaXYpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJ cHJpdi0+YmFzZSA9IGRldm1fcGxhdGZvcm1fZ2V0X2FuZF9pb3JlbWFwX3Jlc291cmNlKHBkZXYs IDAsICZyZXMpOwo+ICsJaWYgKElTX0VSUihwcml2LT5iYXNlKSkKPiArCQlyZXR1cm4gUFRSX0VS Uihwcml2LT5iYXNlKTsKPiArCj4gKwlvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUs ICJyZWctaW8td2lkdGgiLCAmcHJpdi0+aW9fd2lkdGgpOwo+ICsKPiArCWNvbmZpZy5kZXYgPSBk ZXY7Cj4gKwljb25maWcuc2l6ZSA9IHJlc291cmNlX3NpemUocmVzKTsKPiArCWNvbmZpZy53b3Jk X3NpemUgPSBwcml2LT5pb193aWR0aDsKPiArCWNvbmZpZy5zdHJpZGUgPSBwcml2LT5pb193aWR0 aDsKPiArCWNvbmZpZy5wcml2ID0gcHJpdjsKPiArCj4gKwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJP KGRldm1fbnZtZW1fcmVnaXN0ZXIoZGV2LCAmY29uZmlnKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1taW9fbnZtZW1fb2ZfbWF0Y2hfdGFibGVbXSA9IHsK PiArCXsgLmNvbXBhdGlibGUgPSAibW1pby1udm1lbSIsIH0sCj4gKwl7fSwKPiArfTsKPiArCj4g K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1taW9fbnZtZW1fZHJpdmVyID0gewo+ICsJ LnByb2JlID0gbW1pb19udm1lbV9wcm9iZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAi bW1pb19udm1lbSIsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gbW1pb19udm1lbV9vZl9tYXRjaF90 YWJsZSwKPiArCX0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCBtbWlvX252bWVtX2lu aXQodm9pZCkKPiArewo+ICsJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmbW1pb19u dm1lbV9kcml2ZXIpOwo+ICt9Cj4gKwo+ICtzdWJzeXNfaW5pdGNhbGxfc3luYyhtbWlvX252bWVt X2luaXQpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiUmFmYcWCIE1pxYJlY2tpIik7Cj4gK01PRFVM RV9MSUNFTlNFKCJHUEwiKTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbW1pb19udm1lbV9v Zl9tYXRjaF90YWJsZSk7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==