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 25CD4CCA473 for ; Wed, 15 Jun 2022 19:44:25 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WncuODw2Nlt1JbkMRO3lvTu6l9ftFwBjy5t2wEIAE1U=; b=JHz0Xn6sVuq+IM JCJiNNtTBwfxsmy+BNUWknLfJA8zp5yfDNrsZfnAQKa9NR/rkIumrBHbWePzpDsS8oTYmGo7to0ht xcaSSuH5NAtjsTNdJLHg4naOXMFOMuhSg84N/YpelckGrObNbhdc6K8ZzhPmYSTlvha3uXpCDB7eR pZgnzkb/doam5VR4p1uCK28/3MGWhAqa3iIKifmFl1YZHTreDG8cWQ3nvnlB5fLOZwR6rjjHpCb0w q8qnaiXaYJMtR+isCwmYjztjpqNh9I+Uf0prgbvK/+srQaYz7AbAVERP3zNKpgr/ckztjluzeLKPU HHT1eYtNumVeV4fD4lZg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o1YvG-00G6j1-LR; Wed, 15 Jun 2022 19:43:26 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o1Yv5-00G6eF-3n; Wed, 15 Jun 2022 19:43:17 +0000 Received: by mail-ej1-x62d.google.com with SMTP id m20so25201848ejj.10; Wed, 15 Jun 2022 12:43:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WJt5W0EU+sFGaIOZbZ00omdFEDMKZn+VKOgfz5mNEys=; b=b6ysLzlmtRDwylwJm+veQg5s5/vYYErEooJ/Za89I9oViMbUzDMhBbTkShsSQheCLT Ze1sBG5WIQkFwVMq6NgJ9BGXQdNcbFyl74LC5B2CYlPuAje9SLLZB68Um551EM2RMPf/ Budgdhvy4B+A/OxGLMsVQudyDpCj4T93lsk36tK3MCawYkmCLvOEAIX6ocrMQtxu4niR naWZdckq5bJeboip25/FUNax9JBIQ2MgCNOqZs9fOG81GPolMPMTF3Y97P9rKNFQL6j/ eH2OEfNVSW84FcB8cCuqjF471WIPYOPZsM+41Z9m63xpcjmKNXGiyzMOxeCDpOVGV4Xs MjGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WJt5W0EU+sFGaIOZbZ00omdFEDMKZn+VKOgfz5mNEys=; b=J1nXrNqAMdi4cbaUIiJxaWb4rKs8NQXBmg63iHTRmw08KVZVgi4NQB44hqjQI3c9Nv jpNBJmUMJtOE4a+zjKUQM7Omz8htAB55Ic6fQgfp8V842JI1/q4cwN1cHnq2Z4m5/+tq 30+z5EseqBENF/3WtJOEtZQTlBqKqMrre/aB/n9ZFQaQhGcdh0vopIa5Rn4df8yJEIZk 6lEoSaKvrgWswwwSmsTQAXMMLCiXFnbrCfrAjJ3mSfrA9Fw3vP8po7LbKBVz1eu4ZDGZ bMPK6yPvIBUPjoiMhYk9EfQrlYeT5ZRJjhJDUPpQpJps2HIZI1clIUkM4KMCEGxtj2EG LLwQ== X-Gm-Message-State: AJIora+JlCeSuo9OVVo4ez6FLG9DHvPLOXB50Hz5rILshfuA8rbK/BSS k+URve8xIJJOkVJ7RsbM4o8= X-Google-Smtp-Source: AGRyM1vuPw3OzAl1eoIW9BvwLnSyUlDJiu+Q9utQNlOZQIXLMbxiEkM/zTeNKNlSxeQt4nmVcpW2/A== X-Received: by 2002:a17:906:649b:b0:712:24cd:6102 with SMTP id e27-20020a170906649b00b0071224cd6102mr1320880ejm.664.1655322193217; Wed, 15 Jun 2022 12:43:13 -0700 (PDT) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id a16-20020aa7d750000000b0042bd6f745fasm18096eds.92.2022.06.15.12.43.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jun 2022 12:43:12 -0700 (PDT) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra Cc: Tom Rini , Ahmad Fatoum , linux-arm-kernel@lists.infradead.org, u-boot@lists.denx.de, devicetree@vger.kernel.org, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Subject: [PATCH V4 2/2] nvmem: add driver handling U-Boot environment variables Date: Wed, 15 Jun 2022 21:43:00 +0200 Message-Id: <20220615194300.13358-2-zajec5@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220615194300.13358-1-zajec5@gmail.com> References: <20220615194300.13358-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220615_124315_208619_942DF774 X-CRM114-Status: GOOD ( 30.44 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKVS1Cb290IHN0b3JlcyBp dHMgc2V0dXAgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBJdCdzIGEgbGlzdCBvZgprZXktdmFs dWUgcGFpcnMgc3RvcmVkIG9uIGZsYXNoIGRldmljZSB3aXRoIGEgY3VzdG9tIGhlYWRlci4KClRo aXMgY29tbWl0IGFkZHMgYW4gTlZNRU0gZHJpdmVyIHRoYXQ6CjEuIFByb3ZpZGVzIE5WTUVNIGFj Y2VzcyB0byBlbnZpcm9ubWVudCB2YXJzIGJpbmFyeSBkYXRhCjIuIEV4dHJhY3RzIHZhcmlhYmxl cyBhcyBOVk1FTSBjZWxscwoKQ3VycmVudCBMaW51eCdzIE5WTUVNIHN5c2ZzIEFQSSBhbGxvd3Mg cmVhZGluZyB3aG9sZSBOVk1FTSBkYXRhIGJsb2NrLgpJdCBjYW4gYmUgdXNlZCBieSB1c2VyLXNw YWNlIHRvb2xzIGZvciByZWFkaW5nIFUtQm9vdCBlbnYgdmFycyBibG9jawp3aXRob3V0IHRoZSBo YXNzbGUgb2YgZmluZGluZyBpdHMgbG9jYXRpb24uIFBhcnNpbmcgd2lsbCBzdGlsbCBuZWVkIHRv CmJlIHJlLWRvbmUgdGhlcmUuCgpLZXJuZWwtcGFyc2VkIE5WTUVNIGNlbGxzIGNhbiBiZSByZWFk IGhvd2V2ZXIgYnkgTGludXggZHJpdmVycy4gVGhpcyBtYXkKYmUgdXNlZnVsIGZvciBFdGhlcm5l dCBkcml2ZXJzIGZvciByZWFkaW5nIGRldmljZSBNQUMgYWRkcmVzcyB3aGljaCBpcwpvZnRlbiBz dG9yZWQgYXMgVS1Cb290IGVudiB2YXJpYWJsZS4KClNpZ25lZC1vZmYtYnk6IFJhZmHFgiBNacWC ZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KLS0tClYzOiBVc2Ugb2ZfZ2V0X210ZF9kZXZpY2VfYnlf bm9kZSgpICh0aGFua3MgQWhtYWQpICYgdXBkYXRlIGRlc2NyaXB0aW9uClYyOiBEcm9wIEFSQ0hf QkNNNDkwOCBkZXBlbmRlbmN5IGFzIHRoZXJlIGFyZSBwbGVudHkgYXJjaGl0ZWN0dXJlcyB1c2lu ZwogICAgVS1Cb290IGJvb3Rsb2FkZXIuIFRoYW5rcyBTcmluaXZhcy4KVjQ6IE1lbnRpb24gTVRE IGluIEtjb25maWcgaGVscAogICAgVXNlIGNvcnJlY3QgTVREIGRldmljZSAoaW5zdGVhZCBvZiBw YXJlbnQpIC0gc2ltcGxpZmllcyBjb2RlIGEgbG90CiAgICBVc2UgZmxleGlibGUgYXJyYXlzIHN5 bnRheCAoW10pCiAgICBVc2Ugb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCkgaGVscGVyCiAgICBV c2UgZGV2X2Vycl9wcm9iZSgpCgpBcyBub3RpY2VkIGJ5IEFobWFkIGEgbWlzc2luZyBOVk1FTSBz dWJzeXN0ZW0gZmVhdHVyZSBpcyB1c2VyLXNwYWNlCmFjY2VzcyB0byBwYXJzZWQgTlZNRU0gY2Vs bHMuIFRoYXQgaXMgc29tZXRoaW5nIEkgc3RhcnRlZCB3b3JraW5nIG9uCnNvbWUgdGltZSBhZ28g YW5kIEknbSBwbGFubmluZyB0byBnZXQgYmFjayB0byBhdCBzb21lIHBvaW50LCBwbGVhc2UKY2hl Y2s6CltQQVRDSCAyLzJdIG52bWVtOiBleHBvc2UgTlZNRU0gY2VsbHMgaW4gc3lzZnMKaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMTIyMDA2NDczMC4yODgwNi0yLXphamVjNUBnbWFp bC5jb20vCi0tLQogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9u dm1lbS9LY29uZmlnICAgICAgfCAgMTMgKysrCiBkcml2ZXJzL252bWVtL01ha2VmaWxlICAgICB8 ICAgMiArCiBkcml2ZXJzL252bWVtL3UtYm9vdC1lbnYuYyB8IDIxOCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDIzNCBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9udm1lbS91LWJvb3QtZW52LmMKCmRpZmYgLS1n aXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDQ3NWUyODM2NTM4NS4uNDNiNDI3 ZmE3NmIwIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMjA0 MTEsNiArMjA0MTEsNyBAQCBVLUJPT1QgRU5WSVJPTk1FTlQgVkFSSUFCTEVTCiBNOglSYWZhxYIg TWnFgmVja2kgPHJhZmFsQG1pbGVja2kucGw+CiBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vdS1ib290LGVudi55YW1sCitGOglkcml2ZXJz L252bWVtL3UtYm9vdC1lbnYuYwogCiBVQUNDRSBBQ0NFTEVSQVRPUiBGUkFNRVdPUksKIE06CVpo YW5nZmVpIEdhbyA8emhhbmdmZWkuZ2FvQGxpbmFyby5vcmc+CmRpZmYgLS1naXQgYS9kcml2ZXJz L252bWVtL0tjb25maWcgYi9kcml2ZXJzL252bWVtL0tjb25maWcKaW5kZXggZDcyZDg3OWE2ZDM0 Li5iYWI4YTI5Yzk4NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZW0vS2NvbmZpZworKysgYi9k cml2ZXJzL252bWVtL0tjb25maWcKQEAgLTM0NCw0ICszNDQsMTcgQEAgY29uZmlnIE5WTUVNX0FQ UExFX0VGVVNFUwogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUu IElmIHNvLCB0aGUgbW9kdWxlIHdpbGwKIAkgIGJlIGNhbGxlZCBudm1lbS1hcHBsZS1lZnVzZXMu CiAKK2NvbmZpZyBOVk1FTV9VX0JPT1RfRU5WCisJdHJpc3RhdGUgIlUtQm9vdCBlbnZpcm9ubWVu dCB2YXJpYWJsZXMgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIE9GICYmIE1URAorCXNlbGVjdCBDUkMz MgorCWhlbHAKKwkgIFUtQm9vdCBzdG9yZXMgaXRzIHNldHVwIGFzIGVudmlyb25tZW50IHZhcmlh Ymxlcy4gVGhpcyBkcml2ZXIgYWRkcworCSAgc3VwcG9ydCBmb3IgdmVyaWZ5aW5nICYgZXhwb3J0 aW5nIHN1Y2ggZGF0YS4gSXQgYWxzbyBleHBvc2VzIHZhcmlhYmxlcworCSAgYXMgTlZNRU0gY2Vs bHMgc28gdGhleSBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBkcml2ZXJzLgorCisJICBDdXJy ZW50bHkgdGhpcyBkcml2ZXJzIHdvcmtzIG9ubHkgd2l0aCBlbnYgdmFyaWFibGVzIG9uIHRvcCBv ZiBNVEQuCisKKwkgIElmIGNvbXBpbGVkIGFzIG1vZHVsZSBpdCB3aWxsIGJlIGNhbGxlZCBudm1l bV91LWJvb3QtZW52LgorCiBlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lbS9NYWtlZmls ZSBiL2RyaXZlcnMvbnZtZW0vTWFrZWZpbGUKaW5kZXggYzcxMGI2NGY5ZmU0Li4zOTlmOTk3MmQ0 NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZW0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9udm1l bS9NYWtlZmlsZQpAQCAtNjksMyArNjksNSBAQCBvYmotJChDT05GSUdfTlZNRU1fQVBQTEVfRUZV U0VTKQkrPSBudm1lbS1hcHBsZS1lZnVzZXMubwogbnZtZW0tYXBwbGUtZWZ1c2VzLXkgCQk6PSBh cHBsZS1lZnVzZXMubwogb2JqLSQoQ09ORklHX01JQ1JPQ0hJUF9PVFBDKQkrPSBudm1lbS1taWNy b2NoaXAtb3RwYy5vCiBudm1lbS1taWNyb2NoaXAtb3RwYy15CQk6PSBtaWNyb2NoaXAtb3RwYy5v CitvYmotJChDT05GSUdfTlZNRU1fVV9CT09UX0VOVikJKz0gbnZtZW1fdS1ib290LWVudi5vCitu dm1lbV91LWJvb3QtZW52LXkJCTo9IHUtYm9vdC1lbnYubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u dm1lbS91LWJvb3QtZW52LmMgYi9kcml2ZXJzL252bWVtL3UtYm9vdC1lbnYuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjliOWFiZmI4ZjE4NwotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvbnZtZW0vdS1ib290LWVudi5jCkBAIC0wLDAgKzEsMjE4IEBACisvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogQ29weXJpZ2h0IChD KSAyMDIyIFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KKyAqLworCisjaW5jbHVk ZSA8bGludXgvY3JjMzIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFibGUuaD4KKyNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbXRkLmg+CisjaW5j bHVkZSA8bGludXgvbnZtZW0tY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9udm1lbS1wcm92 aWRlci5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworZW51bSB1X2Jvb3Rf ZW52X2Zvcm1hdCB7CisJVV9CT09UX0ZPUk1BVF9TSU5HTEUsCisJVV9CT09UX0ZPUk1BVF9SRURV TkRBTlQsCit9OworCitzdHJ1Y3QgdV9ib290X2VudiB7CisJc3RydWN0IGRldmljZSAqZGV2Owor CWVudW0gdV9ib290X2Vudl9mb3JtYXQgZm9ybWF0OworCisJc3RydWN0IG10ZF9pbmZvICptdGQ7 CisKKwkvKiBDZWxscyAqLworCXN0cnVjdCBudm1lbV9jZWxsX2luZm8gKmNlbGxzOworCWludCBu Y2VsbHM7Cit9OworCitzdHJ1Y3QgdV9ib290X2Vudl9pbWFnZV9zaW5nbGUgeworCV9fbGUzMiBj cmMzMjsKKwl1aW50OF90IGRhdGFbXTsKK30gX19wYWNrZWQ7CisKK3N0cnVjdCB1X2Jvb3RfZW52 X2ltYWdlX3JlZHVuZGFudCB7CisJX19sZTMyIGNyYzMyOworCXU4IG1hcms7CisJdWludDhfdCBk YXRhW107Cit9IF9fcGFja2VkOworCitzdGF0aWMgaW50IHVfYm9vdF9lbnZfcmVhZCh2b2lkICpj b250ZXh0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICp2YWwsCisJCQkgICBzaXplX3QgYnl0 ZXMpCit7CisJc3RydWN0IHVfYm9vdF9lbnYgKnByaXYgPSBjb250ZXh0OworCXN0cnVjdCBkZXZp Y2UgKmRldiA9IHByaXYtPmRldjsKKwlzaXplX3QgYnl0ZXNfcmVhZDsKKwlpbnQgZXJyOworCisJ ZXJyID0gbXRkX3JlYWQocHJpdi0+bXRkLCBvZmZzZXQsIGJ5dGVzLCAmYnl0ZXNfcmVhZCwgdmFs KTsKKwlpZiAoZXJyICYmICFtdGRfaXNfYml0ZmxpcChlcnIpKSB7CisJCWRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIHJlYWQgZnJvbSBtdGQ6ICVkXG4iLCBlcnIpOworCQlyZXR1cm4gZXJyOworCX0K KworCWlmIChieXRlc19yZWFkICE9IGJ5dGVzKSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRv IHJlYWQgJXp1IGJ5dGVzXG4iLCBieXRlcyk7CisJCXJldHVybiAtRUlPOworCX0KKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IHVfYm9vdF9lbnZfYWRkX2NlbGxzKHN0cnVjdCB1X2Jvb3Rf ZW52ICpwcml2LCB1aW50OF90ICpidWYsCisJCQkJc2l6ZV90IGRhdGFfb2Zmc2V0LCBzaXplX3Qg ZGF0YV9sZW4pCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi0+ZGV2OworCWNoYXIgKmRh dGEgPSBidWYgKyBkYXRhX29mZnNldDsKKwljaGFyICp2YXIsICp2YWx1ZSwgKmVxOworCWludCBp ZHg7CisKKwlwcml2LT5uY2VsbHMgPSAwOworCWZvciAodmFyID0gZGF0YTsgdmFyIDwgZGF0YSAr IGRhdGFfbGVuICYmICp2YXI7IHZhciArPSBzdHJsZW4odmFyKSArIDEpCisJCXByaXYtPm5jZWxs cysrOworCisJcHJpdi0+Y2VsbHMgPSBkZXZtX2tjYWxsb2MoZGV2LCBwcml2LT5uY2VsbHMsIHNp emVvZigqcHJpdi0+Y2VsbHMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXYtPmNlbGxzKQorCQly ZXR1cm4gLUVOT01FTTsKKworCWZvciAodmFyID0gZGF0YSwgaWR4ID0gMDsKKwkgICAgIHZhciA8 IGRhdGEgKyBkYXRhX2xlbiAmJiAqdmFyOworCSAgICAgdmFyID0gdmFsdWUgKyBzdHJsZW4odmFs dWUpICsgMSwgaWR4KyspIHsKKwkJZXEgPSBzdHJjaHIodmFyLCAnPScpOworCQlpZiAoIWVxKQor CQkJYnJlYWs7CisJCSplcSA9ICdcMCc7CisJCXZhbHVlID0gZXEgKyAxOworCisJCXByaXYtPmNl bGxzW2lkeF0ubmFtZSA9IGRldm1fa3N0cmR1cChkZXYsIHZhciwgR0ZQX0tFUk5FTCk7CisJCWlm ICghcHJpdi0+Y2VsbHNbaWR4XS5uYW1lKQorCQkJcmV0dXJuIC1FTk9NRU07CisJCXByaXYtPmNl bGxzW2lkeF0ub2Zmc2V0ID0gZGF0YV9vZmZzZXQgKyB2YWx1ZSAtIGRhdGE7CisJCXByaXYtPmNl bGxzW2lkeF0uYnl0ZXMgPSBzdHJsZW4odmFsdWUpOworCX0KKworCWlmIChXQVJOX09OKGlkeCAh PSBwcml2LT5uY2VsbHMpKQorCQlwcml2LT5uY2VsbHMgPSBpZHg7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCB1X2Jvb3RfZW52X3BhcnNlKHN0cnVjdCB1X2Jvb3RfZW52ICpwcml2KQor eworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXYtPmRldjsKKwlzaXplX3QgY3JjMzJfZGF0YV9v ZmZzZXQ7CisJc2l6ZV90IGNyYzMyX2RhdGFfbGVuOworCXNpemVfdCBjcmMzMl9vZmZzZXQ7CisJ c2l6ZV90IGRhdGFfb2Zmc2V0OworCXNpemVfdCBkYXRhX2xlbjsKKwl1aW50MzJfdCBjcmMzMjsK Kwl1aW50MzJfdCBjYWxjOworCXNpemVfdCBieXRlczsKKwl1aW50OF90ICpidWY7CisJaW50IGVy cjsKKworCWJ1ZiA9IGtjYWxsb2MoMSwgcHJpdi0+bXRkLT5zaXplLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIWJ1ZikgeworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIGVycl9vdXQ7CisJfQorCisJZXJy ID0gbXRkX3JlYWQocHJpdi0+bXRkLCAwLCBwcml2LT5tdGQtPnNpemUsICZieXRlcywgYnVmKTsK KwlpZiAoKGVyciAmJiAhbXRkX2lzX2JpdGZsaXAoZXJyKSkgfHwgYnl0ZXMgIT0gcHJpdi0+bXRk LT5zaXplKSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlYWQgZnJvbSBtdGQ6ICVkXG4i LCBlcnIpOworCQlnb3RvIGVycl9rZnJlZTsKKwl9CisKKwlzd2l0Y2ggKHByaXYtPmZvcm1hdCkg eworCWNhc2UgVV9CT09UX0ZPUk1BVF9TSU5HTEU6CisJCWNyYzMyX29mZnNldCA9IG9mZnNldG9m KHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3NpbmdsZSwgY3JjMzIpOworCQljcmMzMl9kYXRhX29m ZnNldCA9IG9mZnNldG9mKHN0cnVjdCB1X2Jvb3RfZW52X2ltYWdlX3NpbmdsZSwgZGF0YSk7CisJ CWRhdGFfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2Vfc2luZ2xlLCBk YXRhKTsKKwkJYnJlYWs7CisJY2FzZSBVX0JPT1RfRk9STUFUX1JFRFVOREFOVDoKKwkJY3JjMzJf b2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1hZ2VfcmVkdW5kYW50LCBjcmMz Mik7CisJCWNyYzMyX2RhdGFfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IHVfYm9vdF9lbnZfaW1h Z2VfcmVkdW5kYW50LCBtYXJrKTsKKwkJZGF0YV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgdV9i b290X2Vudl9pbWFnZV9yZWR1bmRhbnQsIGRhdGEpOworCQlicmVhazsKKwl9CisJY3JjMzIgPSBs ZTMyX3RvX2NwdSgqKHVpbnQzMl90ICopKGJ1ZiArIGNyYzMyX29mZnNldCkpOworCWNyYzMyX2Rh dGFfbGVuID0gcHJpdi0+bXRkLT5zaXplIC0gY3JjMzJfZGF0YV9vZmZzZXQ7CisJZGF0YV9sZW4g PSBwcml2LT5tdGQtPnNpemUgLSBkYXRhX29mZnNldDsKKworCWNhbGMgPSBjcmMzMih+MCwgYnVm ICsgY3JjMzJfZGF0YV9vZmZzZXQsIGNyYzMyX2RhdGFfbGVuKSBeIH4wTDsKKwlpZiAoY2FsYyAh PSBjcmMzMikgeworCQlkZXZfZXJyKGRldiwgIkludmFsaWQgY2FsY3VsYXRlZCBDUkMzMjogMHgl MDh4IChleHBlY3RlZDogMHglMDh4KVxuIiwgY2FsYywgY3JjMzIpOworCQllcnIgPSAtRUlOVkFM OworCQlnb3RvIGVycl9rZnJlZTsKKwl9CisKKwlidWZbcHJpdi0+bXRkLT5zaXplIC0gMV0gPSAn XDAnOworCWVyciA9IHVfYm9vdF9lbnZfYWRkX2NlbGxzKHByaXYsIGJ1ZiwgZGF0YV9vZmZzZXQs IGRhdGFfbGVuKTsKKwlpZiAoZXJyKQorCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBhZGQgY2Vs bHM6ICVkXG4iLCBlcnIpOworCitlcnJfa2ZyZWU6CisJa2ZyZWUoYnVmKTsKK2Vycl9vdXQ6CisJ cmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCB1X2Jvb3RfZW52X3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG52bWVtX2NvbmZpZyBjb25maWcgPSB7CisJ CS5uYW1lID0gInUtYm9vdC1lbnYiLAorCQkucmVnX3JlYWQgPSB1X2Jvb3RfZW52X3JlYWQsCisJ fTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbnAgPSBkZXYtPm9mX25vZGU7CisJc3RydWN0IHVfYm9vdF9lbnYgKnByaXY7CisJaW50IGVy cjsKKworCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIXByaXYpCisJCXJldHVybiAtRU5PTUVNOworCXByaXYtPmRldiA9IGRldjsKKwor CXByaXYtPmZvcm1hdCA9ICh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7 CisKKwlwcml2LT5tdGQgPSBvZl9nZXRfbXRkX2RldmljZV9ieV9ub2RlKG5wKTsKKwlpZiAoSVNf RVJSKHByaXYtPm10ZCkpIHsKKwkJZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi0+bXRk KSwgIkZhaWxlZCB0byBnZXQgJXBPRiBNVERcbiIsIG5wKTsKKwkJcmV0dXJuIFBUUl9FUlIocHJp di0+bXRkKTsKKwl9CisKKwllcnIgPSB1X2Jvb3RfZW52X3BhcnNlKHByaXYpOworCWlmIChlcnIp CisJCXJldHVybiBlcnI7CisKKwljb25maWcuZGV2ID0gZGV2OworCWNvbmZpZy5jZWxscyA9IHBy aXYtPmNlbGxzOworCWNvbmZpZy5uY2VsbHMgPSBwcml2LT5uY2VsbHM7CisJY29uZmlnLnByaXYg PSBwcml2OworCWNvbmZpZy5zaXplID0gcHJpdi0+bXRkLT5zaXplOworCisJcmV0dXJuIFBUUl9F UlJfT1JfWkVSTyhkZXZtX252bWVtX3JlZ2lzdGVyKGRldiwgJmNvbmZpZykpOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB1X2Jvb3RfZW52X29mX21hdGNoX3RhYmxlW10g PSB7CisJeyAuY29tcGF0aWJsZSA9ICJ1LWJvb3QsZW52IiwgLmRhdGEgPSAodm9pZCAqKVVfQk9P VF9GT1JNQVRfU0lOR0xFLCB9LAorCXsgLmNvbXBhdGlibGUgPSAidS1ib290LGVudi1yZWR1bmRh bnQtYm9vbCIsIC5kYXRhID0gKHZvaWQgKilVX0JPT1RfRk9STUFUX1JFRFVOREFOVCwgfSwKKwl7 IC5jb21wYXRpYmxlID0gInUtYm9vdCxlbnYtcmVkdW5kYW50LWNvdW50IiwgLmRhdGEgPSAodm9p ZCAqKVVfQk9PVF9GT1JNQVRfUkVEVU5EQU5ULCB9LAorCXt9LAorfTsKKworc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgdV9ib290X2Vudl9kcml2ZXIgPSB7CisJLnByb2JlID0gdV9ib290 X2Vudl9wcm9iZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJ1X2Jvb3RfZW52IiwKKwkJLm9m X21hdGNoX3RhYmxlID0gdV9ib290X2Vudl9vZl9tYXRjaF90YWJsZSwKKwl9LAorfTsKK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIodV9ib290X2Vudl9kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJS YWZhxYIgTWnFgmVja2kiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIHVfYm9vdF9lbnZfb2ZfbWF0Y2hfdGFibGUpOwotLSAKMi4zNC4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=