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 81EB5C25B6B for ; Thu, 26 Oct 2023 07:35:28 +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: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:In-Reply-To:References: List-Owner; bh=hyw07Jay+NQblvYt2zTvnxXhQ9KngtQ0TPkxo0P5qd8=; b=icOn02d53cJWis lXexb+b5jdxY96hpxymgSBRaoOtcxkCNVKALoet0Hll4g2HQRPytWyr9zpL2oUDfCe0wjKG+20paI qEQZso1Nz05TfdX/FMtrwVUGKKhs20ShzGMdx3186WQOJwNxhu5ylZJ9vt824OGwAZUSkac0b34t0 OxAt6exWq2l09rv2aLgK5os47PQFcQaJ3JSWqnejrQ3arbrrTABFhnY0NpjadBwxj9dteOXO5zPnn I7arLvpHUmXZcOYl+dmO+AA53vapUnpkG+w4YiEaIQ8OKUKFCvb3m2YtQ+oYFBud4J041ZytGzK0n e5HwPRCqasa+WiNPEp/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qvute-00DrTj-1i; Thu, 26 Oct 2023 07:35:14 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qvutb-00DrSx-1s; Thu, 26 Oct 2023 07:35:13 +0000 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-507e85ebf50so714047e87.1; Thu, 26 Oct 2023 00:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698305707; x=1698910507; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=hJZ6wfm0bTuqieUHXEKtRuJrDeks5L6l8rWKf4hHJEo=; b=WtxAka7MtV8LeJFCIRD1mH0GwBiSBeUm+VN8cFn1UQyzNcwfmMREXsGkSkc7e2H10Q BvJhILz3Gs8n0ymXfQ354i3GCDY2SUF7VXyPCIqTOV+9utc3TeuxIjtuOF7F93QtkBn6 9QMvZh73k2L9d1FXQjnPkBnVEAUVmSNLI+b6V0aZJAFy7e+FyeuBTDcLuy1wLipCTiZ8 ZO7iUIH74izm89BLuBS+/IFBsv/y2ivywoHKa82Be/i47E4gOUT4xsMsfmrg7YQgrG7u kyykH4VtvBku7ShgdGav5Pm8PCoegoHGkJLm1CE/7SEioQM9zxF/UiP2oc9CPy9CBkJo iLlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698305707; x=1698910507; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hJZ6wfm0bTuqieUHXEKtRuJrDeks5L6l8rWKf4hHJEo=; b=OFLyVemGBKmBu5ClStBEm7KZKgFrDEfT0jALBzapNylSAe1Qvs6jvuxqZCd0oQZjQi JhZlwuhipaC/YkS3ODyQHM5ce5zaaX7ghaCQ73tXvzTV3dFNtQDP8ZhjnA3UB0CNRp0i wdeHF6+GJ0oMi/5H6EMKRUIbCC6PPZn9WNCLTeM0SQLaGCSEmPCi9qOssxbXRb1eIuZk GBEW9Jy6sMvEQBopelFtuc/7GhBL1NFOoLi5S659E3Ov626iMjEJNHVBTgFY45fSETFj 9u1wMBkYZU4nhdLBbfUBO5WUnonnQLf4eMDCgyKjGEEaJ2BAFvC7BYnwNdBwFJ8hRYQM ohkg== X-Gm-Message-State: AOJu0YzI5PwwlfX3zml2O68p+er1MG+HlB6JkhMZnTKwsu7bN5l2lC+k 7SlcE9GrJlcXG4UQfrMl5SjOXBFWmpM= X-Google-Smtp-Source: AGHT+IF1kDUFN0AdnY4R0HavPdl604V/76H23E4wqzAPj8PJLLQTSSq1movSs/LWlTbRJ2bShRj4gg== X-Received: by 2002:a05:6512:3d29:b0:507:ba28:1bc5 with SMTP id d41-20020a0565123d2900b00507ba281bc5mr15172418lfv.3.1698305707045; Thu, 26 Oct 2023 00:35:07 -0700 (PDT) Received: from localhost.lan (031011218106.poznan.vectranet.pl. [31.11.218.106]) by smtp.gmail.com with ESMTPSA id x12-20020a056512078c00b00507a4661f76sm2895189lfr.145.2023.10.26.00.35.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 00:35:06 -0700 (PDT) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla Cc: linux-mtd@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= , Florian Fainelli , Scott Branden Subject: [PATCH V2] nvmem: brcm_nvram: store a copy of NVRAM content Date: Thu, 26 Oct 2023 09:34:40 +0200 Message-Id: <20231026073440.6724-1-zajec5@gmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231026_003511_623692_03690A8B X-CRM114-Status: GOOD ( 22.06 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKVGhpcyBkcml2ZXIgdXNl cyBNTUlPIGFjY2VzcyBmb3IgcmVhZGluZyBOVlJBTSBmcm9tIGEgZmxhc2ggZGV2aWNlLgpVbmRl cm5lYXRoIHRoZXJlIGlzIGEgZmxhc2ggY29udHJvbGxlciB0aGF0IHJlYWRzIGRhdGEgYW5kIHBy b3ZpZGVzCm1hcHBpbmcgd2luZG93LgoKVXNpbmcgTU1JTyBpbnRlcmZhY2UgYWZmZWN0cyBjb250 cm9sbGVyIGNvbmZpZ3VyYXRpb24gYW5kIG1heSBicmVhayByZWFsCmNvbnRyb2xsZXIgZHJpdmVy LiBJdCB3YXMgcmVwb3J0ZWQgYnkgbXVsdGlwbGUgdXNlcnMgb2YgZGV2aWNlcyB3aXRoCk5WUkFN IHN0b3JlZCBvbiBOQU5ELgoKTW9kaWZ5IGRyaXZlciB0byByZWFkICYgY2FjaGUgTlZSQU0gY29u dGVudCBkdXJpbmcgaW5pdCBhbmQgdXNlIHRoYXQKY29weSB0byBwcm92aWRlIE5WTUVNIGRhdGEg d2hlbiByZXF1ZXN0ZWQuIE9uIE5BTkQgZmxhc2hlcyBkdWUgdG8gdGhlaXIKYWxpZ25tZW50IE5W UkFNIHBhcnRpdGlvbnMgY2FuIGJlIHF1aXRlIGJpZyAoMSBNaUIgYW5kIG1vcmUpIHdoaWxlCmFj dHVhbCBOVlJBTSBjb250ZW50IHN0YXlzIHF1aXRlIHNtYWxsICh1c3VhbGx5IDE2IHRvIDMyIEtp QikuIFRvIGF2b2lkCmFsbG9jYXRpbmcgc28gbXVjaCBtZW1vcnkgY2hlY2sgZm9yIGFjdHVhbCBk YXRhIGxlbmd0aC4KCkxpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LW10ZC9DQUNu YTZyd2YzXzlRVmpZY00rODQ3YmlUWD1LMEVvV1h1WGNTTWtKTzFWeV81dm1WcUFAbWFpbC5nbWFp bC5jb20vCkZpeGVzOiAzZmVmOWVkMDYyN2EgKCJudm1lbTogYnJjbV9udnJhbTogbmV3IGRyaXZl ciBleHBvc2luZyBCcm9hZGNvbSdzIE5WUkFNIikKQ2M6IEFyxLFuw6cgw5xOQUwgPGFyaW5jLnVu YWxAYXJpbmM5LmNvbT4KQ2M6IEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJv YWRjb20uY29tPgpDYzogU2NvdHQgQnJhbmRlbiA8c2NvdHQuYnJhbmRlbkBicm9hZGNvbS5jb20+ ClNpZ25lZC1vZmYtYnk6IFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KLS0tClYy OiBNaW5pYWxpemUgYW1vdW50IG9mIGFsbG9jYXRlZCBtZW1vcnkgKGNoZWNrIGZvciBhY3R1YWwg ZGF0YSBsZW5ndGgpCgogZHJpdmVycy9udm1lbS9icmNtX252cmFtLmMgfCAxMzEgKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkxIGluc2VydGlv bnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vYnJjbV9u dnJhbS5jIGIvZHJpdmVycy9udm1lbS9icmNtX252cmFtLmMKaW5kZXggOTczNzEwNGYzYjc2Li5m YmQxMzM3MzJiYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZW0vYnJjbV9udnJhbS5jCisrKyBi L2RyaXZlcnMvbnZtZW0vYnJjbV9udnJhbS5jCkBAIC0xNyw5ICsxNywyMCBAQAogCiAjZGVmaW5l IE5WUkFNX01BR0lDCQkJIkZMU0giCiAKKy8qKgorICogc3RydWN0IGJyY21fbnZyYW0gLSBkcml2 ZXIgc3RhdGUgaW50ZXJuYWwgc3RydWN0CisgKgorICogQG52bWVtX3NpemU6CQlTaXplIG9mIHRo ZSB3aG9sZSBzcGFjZSBhdmFpbGFibGUgZm9yIE5WUkFNCisgKiBAZGF0YToJCU5WUkFNIGRhdGEg Y29weSBzdG9yZWQgdG8gYXZvaWQgcG9raW5nIHVuZGVybGF5aW5nIGZsYXNoIGNvbnRyb2xsZXIK KyAqIEBkYXRhX2xlbjoJCU5WUkFNIGRhdGEgc2l6ZQorICogQHBhZGRpbmdfYnl0ZToJUGFkZGlu ZyB2YWx1ZSB1c2VkIHRvIGZpbGwgcmVtYWluaW5nIHNwYWNlCisgKi8KIHN0cnVjdCBicmNtX252 cmFtIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Ci0Jdm9pZCBfX2lvbWVtICpiYXNlOworCXNpemVf dCBudm1lbV9zaXplOworCXVpbnQ4X3QgKmRhdGE7CisJc2l6ZV90IGRhdGFfbGVuOworCXVpbnQ4 X3QgcGFkZGluZ19ieXRlOwogCXN0cnVjdCBudm1lbV9jZWxsX2luZm8gKmNlbGxzOwogCWludCBu Y2VsbHM7CiB9OwpAQCAtMzYsMTAgKzQ3LDQ3IEBAIHN0YXRpYyBpbnQgYnJjbV9udnJhbV9yZWFk KHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKnZhbCwKIAkJCSAgIHNp emVfdCBieXRlcykKIHsKIAlzdHJ1Y3QgYnJjbV9udnJhbSAqcHJpdiA9IGNvbnRleHQ7Ci0JdTgg KmRzdCA9IHZhbDsKKwlzaXplX3QgdG9fY29weTsKKworCWlmIChvZmZzZXQgKyBieXRlcyA+IHBy aXYtPmRhdGFfbGVuKQorCQl0b19jb3B5ID0gbWF4X3Qoc3NpemVfdCwgKHNzaXplX3QpcHJpdi0+ ZGF0YV9sZW4gLSBvZmZzZXQsIDApOworCWVsc2UKKwkJdG9fY29weSA9IGJ5dGVzOworCisJbWVt Y3B5KHZhbCwgcHJpdi0+ZGF0YSArIG9mZnNldCwgdG9fY29weSk7CisKKwltZW1zZXQoKHVpbnQ4 X3QgKil2YWwgKyB0b19jb3B5LCBwcml2LT5wYWRkaW5nX2J5dGUsIGJ5dGVzIC0gdG9fY29weSk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBicmNtX252cmFtX2NvcHlfZGF0YShzdHJ1 Y3QgYnJjbV9udnJhbSAqcHJpdiwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisKKwliYXNlID0gZGV2 bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCwgJnJlcyk7CisJaWYg KElTX0VSUihiYXNlKSkKKwkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7CisKKwlwcml2LT5udm1lbV9z aXplID0gcmVzb3VyY2Vfc2l6ZShyZXMpOworCisJcHJpdi0+cGFkZGluZ19ieXRlID0gcmVhZGIo YmFzZSArIHByaXYtPm52bWVtX3NpemUgLSAxKTsKKwlmb3IgKHByaXYtPmRhdGFfbGVuID0gcHJp di0+bnZtZW1fc2l6ZTsKKwkgICAgIHByaXYtPmRhdGFfbGVuOworCSAgICAgcHJpdi0+ZGF0YV9s ZW4tLSkgeworCQlpZiAocmVhZGIoYmFzZSArIHByaXYtPmRhdGFfbGVuIC0gMSkgIT0gcHJpdi0+ cGFkZGluZ19ieXRlKQorCQkJYnJlYWs7CisJfQorCVdBUk4ocHJpdi0+ZGF0YV9sZW4gPiBTWl8x MjhLLCAiVW5leHBlY3RlZCAoYmlnKSBOVlJBTSBzaXplOiAlenUgQlxuIiwgcHJpdi0+ZGF0YV9s ZW4pOworCisJcHJpdi0+ZGF0YSA9IGRldm1fa3phbGxvYyhwcml2LT5kZXYsIHByaXYtPmRhdGFf bGVuLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXYtPmRhdGEpCisJCXJldHVybiAtRU5PTUVNOwor CisJbWVtY3B5X2Zyb21pbyhwcml2LT5kYXRhLCBiYXNlLCBwcml2LT5kYXRhX2xlbik7CiAKLQl3 aGlsZSAoYnl0ZXMtLSkKLQkJKmRzdCsrID0gcmVhZGIocHJpdi0+YmFzZSArIG9mZnNldCsrKTsK KwliY200N3h4X252cmFtX2luaXRfZnJvbV9pb21lbShiYXNlLCBwcml2LT5kYXRhX2xlbik7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTY3LDggKzExNSwxMyBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1f YWRkX2NlbGxzKHN0cnVjdCBicmNtX252cmFtICpwcml2LCB1aW50OF90ICpkYXRhLAogCQkJCXNp emVfdCBsZW4pCiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi0+ZGV2OwotCWNoYXIgKnZh ciwgKnZhbHVlLCAqZXE7CisJY2hhciAqdmFyLCAqdmFsdWU7CisJdWludDhfdCB0bXA7CiAJaW50 IGlkeDsKKwlpbnQgZXJyID0gMDsKKworCXRtcCA9IHByaXYtPmRhdGFbbGVuIC0gMV07CisJcHJp di0+ZGF0YVtsZW4gLSAxXSA9ICdcMCc7CiAKIAlwcml2LT5uY2VsbHMgPSAwOwogCWZvciAodmFy ID0gZGF0YSArIHNpemVvZihzdHJ1Y3QgYnJjbV9udnJhbV9oZWFkZXIpOwpAQCAtNzgsNjcgKzEz MSw2OCBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1fYWRkX2NlbGxzKHN0cnVjdCBicmNtX252cmFt ICpwcml2LCB1aW50OF90ICpkYXRhLAogCX0KIAogCXByaXYtPmNlbGxzID0gZGV2bV9rY2FsbG9j KGRldiwgcHJpdi0+bmNlbGxzLCBzaXplb2YoKnByaXYtPmNlbGxzKSwgR0ZQX0tFUk5FTCk7Ci0J aWYgKCFwcml2LT5jZWxscykKLQkJcmV0dXJuIC1FTk9NRU07CisJaWYgKCFwcml2LT5jZWxscykg eworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CiAKIAlmb3IgKHZhciA9IGRhdGEg KyBzaXplb2Yoc3RydWN0IGJyY21fbnZyYW1faGVhZGVyKSwgaWR4ID0gMDsKIAkgICAgIHZhciA8 IChjaGFyICopZGF0YSArIGxlbiAmJiAqdmFyOwogCSAgICAgdmFyID0gdmFsdWUgKyBzdHJsZW4o dmFsdWUpICsgMSwgaWR4KyspIHsKKwkJY2hhciAqZXEsICpuYW1lOworCiAJCWVxID0gc3RyY2hy KHZhciwgJz0nKTsKIAkJaWYgKCFlcSkKIAkJCWJyZWFrOwogCQkqZXEgPSAnXDAnOworCQluYW1l ID0gZGV2bV9rc3RyZHVwKGRldiwgdmFyLCBHRlBfS0VSTkVMKTsKKwkJKmVxID0gJz0nOworCQlp ZiAoIW5hbWUpIHsKKwkJCWVyciA9IC1FTk9NRU07CisJCQlnb3RvIG91dDsKKwkJfQogCQl2YWx1 ZSA9IGVxICsgMTsKIAotCQlwcml2LT5jZWxsc1tpZHhdLm5hbWUgPSBkZXZtX2tzdHJkdXAoZGV2 LCB2YXIsIEdGUF9LRVJORUwpOwotCQlpZiAoIXByaXYtPmNlbGxzW2lkeF0ubmFtZSkKLQkJCXJl dHVybiAtRU5PTUVNOworCQlwcml2LT5jZWxsc1tpZHhdLm5hbWUgPSBuYW1lOwogCQlwcml2LT5j ZWxsc1tpZHhdLm9mZnNldCA9IHZhbHVlIC0gKGNoYXIgKilkYXRhOwogCQlwcml2LT5jZWxsc1tp ZHhdLmJ5dGVzID0gc3RybGVuKHZhbHVlKTsKIAkJcHJpdi0+Y2VsbHNbaWR4XS5ucCA9IG9mX2dl dF9jaGlsZF9ieV9uYW1lKGRldi0+b2Zfbm9kZSwgcHJpdi0+Y2VsbHNbaWR4XS5uYW1lKTsKLQkJ aWYgKCFzdHJjbXAodmFyLCAiZXQwbWFjYWRkciIpIHx8Ci0JCSAgICAhc3RyY21wKHZhciwgImV0 MW1hY2FkZHIiKSB8fAotCQkgICAgIXN0cmNtcCh2YXIsICJldDJtYWNhZGRyIikpIHsKKwkJaWYg KCFzdHJjbXAobmFtZSwgImV0MG1hY2FkZHIiKSB8fAorCQkgICAgIXN0cmNtcChuYW1lLCAiZXQx bWFjYWRkciIpIHx8CisJCSAgICAhc3RyY21wKG5hbWUsICJldDJtYWNhZGRyIikpIHsKIAkJCXBy aXYtPmNlbGxzW2lkeF0ucmF3X2xlbiA9IHN0cmxlbih2YWx1ZSk7CiAJCQlwcml2LT5jZWxsc1tp ZHhdLmJ5dGVzID0gRVRIX0FMRU47CiAJCQlwcml2LT5jZWxsc1tpZHhdLnJlYWRfcG9zdF9wcm9j ZXNzID0gYnJjbV9udnJhbV9yZWFkX3Bvc3RfcHJvY2Vzc19tYWNhZGRyOwogCQl9CiAJfQogCi0J cmV0dXJuIDA7CitvdXQ6CisJcHJpdi0+ZGF0YVtsZW4gLSAxXSA9IHRtcDsKKwlyZXR1cm4gZXJy OwogfQogCiBzdGF0aWMgaW50IGJyY21fbnZyYW1fcGFyc2Uoc3RydWN0IGJyY21fbnZyYW0gKnBy aXYpCiB7CisJc3RydWN0IGJyY21fbnZyYW1faGVhZGVyICpoZWFkZXIgPSAoc3RydWN0IGJyY21f bnZyYW1faGVhZGVyICopcHJpdi0+ZGF0YTsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5k ZXY7Ci0Jc3RydWN0IGJyY21fbnZyYW1faGVhZGVyIGhlYWRlcjsKLQl1aW50OF90ICpkYXRhOwog CXNpemVfdCBsZW47CiAJaW50IGVycjsKIAotCW1lbWNweV9mcm9taW8oJmhlYWRlciwgcHJpdi0+ YmFzZSwgc2l6ZW9mKGhlYWRlcikpOwotCi0JaWYgKG1lbWNtcChoZWFkZXIubWFnaWMsIE5WUkFN X01BR0lDLCA0KSkgeworCWlmIChtZW1jbXAoaGVhZGVyLT5tYWdpYywgTlZSQU1fTUFHSUMsIDQp KSB7CiAJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBOVlJBTSBtYWdpY1xuIik7CiAJCXJldHVybiAt RUlOVkFMOwogCX0KIAotCWxlbiA9IGxlMzJfdG9fY3B1KGhlYWRlci5sZW4pOwotCi0JZGF0YSA9 IGt6YWxsb2MobGVuLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWRhdGEpCi0JCXJldHVybiAtRU5PTUVN OwotCi0JbWVtY3B5X2Zyb21pbyhkYXRhLCBwcml2LT5iYXNlLCBsZW4pOwotCWRhdGFbbGVuIC0g MV0gPSAnXDAnOwotCi0JZXJyID0gYnJjbV9udnJhbV9hZGRfY2VsbHMocHJpdiwgZGF0YSwgbGVu KTsKLQlpZiAoZXJyKSB7Ci0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBjZWxsczogJWRc biIsIGVycik7Ci0JCXJldHVybiBlcnI7CisJbGVuID0gbGUzMl90b19jcHUoaGVhZGVyLT5sZW4p OworCWlmIChsZW4gPiBwcml2LT5udm1lbV9zaXplKSB7CisJCWRldl9lcnIoZGV2LCAiTlZSQU0g bGVuZ3RoICglemQpIGV4Y2VlZHMgbWFwcGVkIHNpemUgKCV6ZClcbiIsIGxlbiwKKwkJCXByaXYt Pm52bWVtX3NpemUpOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlrZnJlZShkYXRhKTsKKwll cnIgPSBicmNtX252cmFtX2FkZF9jZWxscyhwcml2LCBwcml2LT5kYXRhLCBsZW4pOworCWlmIChl cnIpCisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBjZWxsczogJWRcbiIsIGVycik7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTE1MCw3ICsyMDQsNiBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1f cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJLnJlZ19yZWFkID0gYnJjbV9u dnJhbV9yZWFkLAogCX07CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKLQlzdHJ1 Y3QgcmVzb3VyY2UgKnJlczsKIAlzdHJ1Y3QgYnJjbV9udnJhbSAqcHJpdjsKIAlpbnQgZXJyOwog CkBAIC0xNTksMjEgKzIxMiwxOSBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1fcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcmV0dXJuIC1FTk9NRU07CiAJcHJpdi0+ZGV2ID0g ZGV2OwogCi0JcHJpdi0+YmFzZSA9IGRldm1fcGxhdGZvcm1fZ2V0X2FuZF9pb3JlbWFwX3Jlc291 cmNlKHBkZXYsIDAsICZyZXMpOwotCWlmIChJU19FUlIocHJpdi0+YmFzZSkpCi0JCXJldHVybiBQ VFJfRVJSKHByaXYtPmJhc2UpOworCWVyciA9IGJyY21fbnZyYW1fY29weV9kYXRhKHByaXYsIHBk ZXYpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CiAKIAllcnIgPSBicmNtX252cmFtX3BhcnNl KHByaXYpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQliY200N3h4X252cmFtX2luaXRf ZnJvbV9pb21lbShwcml2LT5iYXNlLCByZXNvdXJjZV9zaXplKHJlcykpOwotCiAJY29uZmlnLmRl diA9IGRldjsKIAljb25maWcuY2VsbHMgPSBwcml2LT5jZWxsczsKIAljb25maWcubmNlbGxzID0g cHJpdi0+bmNlbGxzOwogCWNvbmZpZy5wcml2ID0gcHJpdjsKLQljb25maWcuc2l6ZSA9IHJlc291 cmNlX3NpemUocmVzKTsKKwljb25maWcuc2l6ZSA9IHByaXYtPm52bWVtX3NpemU7CiAKIAlyZXR1 cm4gUFRSX0VSUl9PUl9aRVJPKGRldm1fbnZtZW1fcmVnaXN0ZXIoZGV2LCAmY29uZmlnKSk7CiB9 Ci0tIAoyLjM1LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= 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 84149C25B48 for ; Thu, 26 Oct 2023 07:35:45 +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: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:In-Reply-To:References: List-Owner; bh=FEST4D+yarYha3Hrkot1nq6RrwpH6inht+r3vVoYRC8=; b=hzw8yqEjVzIjuK fmRn/0movxxWIJUbruEdq2TS/LWn67MmJiuYBsa6EPwU1AXqZTsxBde7Sex/D5r7ccbT9uHHDc1Xa ANFXjfbrTMoY4M4oBAnbjafO4zqxpPK6XtA7VqTDN2GEEVsvRbppgS+NoN69/hndwH6Y9BIRQnyMc b6JIeAsPTEgy4DPMQf6KRuw6d85g+B/fZKeQQnlFkMnr5a6ZwU5K6jmj69EFbVEwt9UBXGs8NlsLw uI3rO0c2Frp4jj6stEdQJs3SY61nSye2VYNIUEWMJ5hQ0Q1P16w8uaNGsjE+VeQ5s6RLeE25hW/Ey hi2cTUkVsvxaShP4wYjA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qvutf-00DrTp-0F; Thu, 26 Oct 2023 07:35:15 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qvutb-00DrSx-1s; Thu, 26 Oct 2023 07:35:13 +0000 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-507e85ebf50so714047e87.1; Thu, 26 Oct 2023 00:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698305707; x=1698910507; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=hJZ6wfm0bTuqieUHXEKtRuJrDeks5L6l8rWKf4hHJEo=; b=WtxAka7MtV8LeJFCIRD1mH0GwBiSBeUm+VN8cFn1UQyzNcwfmMREXsGkSkc7e2H10Q BvJhILz3Gs8n0ymXfQ354i3GCDY2SUF7VXyPCIqTOV+9utc3TeuxIjtuOF7F93QtkBn6 9QMvZh73k2L9d1FXQjnPkBnVEAUVmSNLI+b6V0aZJAFy7e+FyeuBTDcLuy1wLipCTiZ8 ZO7iUIH74izm89BLuBS+/IFBsv/y2ivywoHKa82Be/i47E4gOUT4xsMsfmrg7YQgrG7u kyykH4VtvBku7ShgdGav5Pm8PCoegoHGkJLm1CE/7SEioQM9zxF/UiP2oc9CPy9CBkJo iLlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698305707; x=1698910507; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hJZ6wfm0bTuqieUHXEKtRuJrDeks5L6l8rWKf4hHJEo=; b=OFLyVemGBKmBu5ClStBEm7KZKgFrDEfT0jALBzapNylSAe1Qvs6jvuxqZCd0oQZjQi JhZlwuhipaC/YkS3ODyQHM5ce5zaaX7ghaCQ73tXvzTV3dFNtQDP8ZhjnA3UB0CNRp0i wdeHF6+GJ0oMi/5H6EMKRUIbCC6PPZn9WNCLTeM0SQLaGCSEmPCi9qOssxbXRb1eIuZk GBEW9Jy6sMvEQBopelFtuc/7GhBL1NFOoLi5S659E3Ov626iMjEJNHVBTgFY45fSETFj 9u1wMBkYZU4nhdLBbfUBO5WUnonnQLf4eMDCgyKjGEEaJ2BAFvC7BYnwNdBwFJ8hRYQM ohkg== X-Gm-Message-State: AOJu0YzI5PwwlfX3zml2O68p+er1MG+HlB6JkhMZnTKwsu7bN5l2lC+k 7SlcE9GrJlcXG4UQfrMl5SjOXBFWmpM= X-Google-Smtp-Source: AGHT+IF1kDUFN0AdnY4R0HavPdl604V/76H23E4wqzAPj8PJLLQTSSq1movSs/LWlTbRJ2bShRj4gg== X-Received: by 2002:a05:6512:3d29:b0:507:ba28:1bc5 with SMTP id d41-20020a0565123d2900b00507ba281bc5mr15172418lfv.3.1698305707045; Thu, 26 Oct 2023 00:35:07 -0700 (PDT) Received: from localhost.lan (031011218106.poznan.vectranet.pl. [31.11.218.106]) by smtp.gmail.com with ESMTPSA id x12-20020a056512078c00b00507a4661f76sm2895189lfr.145.2023.10.26.00.35.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 00:35:06 -0700 (PDT) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla Cc: linux-mtd@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= , Florian Fainelli , Scott Branden Subject: [PATCH V2] nvmem: brcm_nvram: store a copy of NVRAM content Date: Thu, 26 Oct 2023 09:34:40 +0200 Message-Id: <20231026073440.6724-1-zajec5@gmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231026_003511_623692_03690A8B X-CRM114-Status: GOOD ( 22.06 ) 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 RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKVGhpcyBkcml2ZXIgdXNl cyBNTUlPIGFjY2VzcyBmb3IgcmVhZGluZyBOVlJBTSBmcm9tIGEgZmxhc2ggZGV2aWNlLgpVbmRl cm5lYXRoIHRoZXJlIGlzIGEgZmxhc2ggY29udHJvbGxlciB0aGF0IHJlYWRzIGRhdGEgYW5kIHBy b3ZpZGVzCm1hcHBpbmcgd2luZG93LgoKVXNpbmcgTU1JTyBpbnRlcmZhY2UgYWZmZWN0cyBjb250 cm9sbGVyIGNvbmZpZ3VyYXRpb24gYW5kIG1heSBicmVhayByZWFsCmNvbnRyb2xsZXIgZHJpdmVy LiBJdCB3YXMgcmVwb3J0ZWQgYnkgbXVsdGlwbGUgdXNlcnMgb2YgZGV2aWNlcyB3aXRoCk5WUkFN IHN0b3JlZCBvbiBOQU5ELgoKTW9kaWZ5IGRyaXZlciB0byByZWFkICYgY2FjaGUgTlZSQU0gY29u dGVudCBkdXJpbmcgaW5pdCBhbmQgdXNlIHRoYXQKY29weSB0byBwcm92aWRlIE5WTUVNIGRhdGEg d2hlbiByZXF1ZXN0ZWQuIE9uIE5BTkQgZmxhc2hlcyBkdWUgdG8gdGhlaXIKYWxpZ25tZW50IE5W UkFNIHBhcnRpdGlvbnMgY2FuIGJlIHF1aXRlIGJpZyAoMSBNaUIgYW5kIG1vcmUpIHdoaWxlCmFj dHVhbCBOVlJBTSBjb250ZW50IHN0YXlzIHF1aXRlIHNtYWxsICh1c3VhbGx5IDE2IHRvIDMyIEtp QikuIFRvIGF2b2lkCmFsbG9jYXRpbmcgc28gbXVjaCBtZW1vcnkgY2hlY2sgZm9yIGFjdHVhbCBk YXRhIGxlbmd0aC4KCkxpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LW10ZC9DQUNu YTZyd2YzXzlRVmpZY00rODQ3YmlUWD1LMEVvV1h1WGNTTWtKTzFWeV81dm1WcUFAbWFpbC5nbWFp bC5jb20vCkZpeGVzOiAzZmVmOWVkMDYyN2EgKCJudm1lbTogYnJjbV9udnJhbTogbmV3IGRyaXZl ciBleHBvc2luZyBCcm9hZGNvbSdzIE5WUkFNIikKQ2M6IEFyxLFuw6cgw5xOQUwgPGFyaW5jLnVu YWxAYXJpbmM5LmNvbT4KQ2M6IEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJv YWRjb20uY29tPgpDYzogU2NvdHQgQnJhbmRlbiA8c2NvdHQuYnJhbmRlbkBicm9hZGNvbS5jb20+ ClNpZ25lZC1vZmYtYnk6IFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KLS0tClYy OiBNaW5pYWxpemUgYW1vdW50IG9mIGFsbG9jYXRlZCBtZW1vcnkgKGNoZWNrIGZvciBhY3R1YWwg ZGF0YSBsZW5ndGgpCgogZHJpdmVycy9udm1lbS9icmNtX252cmFtLmMgfCAxMzEgKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkxIGluc2VydGlv bnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vYnJjbV9u dnJhbS5jIGIvZHJpdmVycy9udm1lbS9icmNtX252cmFtLmMKaW5kZXggOTczNzEwNGYzYjc2Li5m YmQxMzM3MzJiYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZW0vYnJjbV9udnJhbS5jCisrKyBi L2RyaXZlcnMvbnZtZW0vYnJjbV9udnJhbS5jCkBAIC0xNyw5ICsxNywyMCBAQAogCiAjZGVmaW5l IE5WUkFNX01BR0lDCQkJIkZMU0giCiAKKy8qKgorICogc3RydWN0IGJyY21fbnZyYW0gLSBkcml2 ZXIgc3RhdGUgaW50ZXJuYWwgc3RydWN0CisgKgorICogQG52bWVtX3NpemU6CQlTaXplIG9mIHRo ZSB3aG9sZSBzcGFjZSBhdmFpbGFibGUgZm9yIE5WUkFNCisgKiBAZGF0YToJCU5WUkFNIGRhdGEg Y29weSBzdG9yZWQgdG8gYXZvaWQgcG9raW5nIHVuZGVybGF5aW5nIGZsYXNoIGNvbnRyb2xsZXIK KyAqIEBkYXRhX2xlbjoJCU5WUkFNIGRhdGEgc2l6ZQorICogQHBhZGRpbmdfYnl0ZToJUGFkZGlu ZyB2YWx1ZSB1c2VkIHRvIGZpbGwgcmVtYWluaW5nIHNwYWNlCisgKi8KIHN0cnVjdCBicmNtX252 cmFtIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Ci0Jdm9pZCBfX2lvbWVtICpiYXNlOworCXNpemVf dCBudm1lbV9zaXplOworCXVpbnQ4X3QgKmRhdGE7CisJc2l6ZV90IGRhdGFfbGVuOworCXVpbnQ4 X3QgcGFkZGluZ19ieXRlOwogCXN0cnVjdCBudm1lbV9jZWxsX2luZm8gKmNlbGxzOwogCWludCBu Y2VsbHM7CiB9OwpAQCAtMzYsMTAgKzQ3LDQ3IEBAIHN0YXRpYyBpbnQgYnJjbV9udnJhbV9yZWFk KHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKnZhbCwKIAkJCSAgIHNp emVfdCBieXRlcykKIHsKIAlzdHJ1Y3QgYnJjbV9udnJhbSAqcHJpdiA9IGNvbnRleHQ7Ci0JdTgg KmRzdCA9IHZhbDsKKwlzaXplX3QgdG9fY29weTsKKworCWlmIChvZmZzZXQgKyBieXRlcyA+IHBy aXYtPmRhdGFfbGVuKQorCQl0b19jb3B5ID0gbWF4X3Qoc3NpemVfdCwgKHNzaXplX3QpcHJpdi0+ ZGF0YV9sZW4gLSBvZmZzZXQsIDApOworCWVsc2UKKwkJdG9fY29weSA9IGJ5dGVzOworCisJbWVt Y3B5KHZhbCwgcHJpdi0+ZGF0YSArIG9mZnNldCwgdG9fY29weSk7CisKKwltZW1zZXQoKHVpbnQ4 X3QgKil2YWwgKyB0b19jb3B5LCBwcml2LT5wYWRkaW5nX2J5dGUsIGJ5dGVzIC0gdG9fY29weSk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBicmNtX252cmFtX2NvcHlfZGF0YShzdHJ1 Y3QgYnJjbV9udnJhbSAqcHJpdiwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisKKwliYXNlID0gZGV2 bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCwgJnJlcyk7CisJaWYg KElTX0VSUihiYXNlKSkKKwkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7CisKKwlwcml2LT5udm1lbV9z aXplID0gcmVzb3VyY2Vfc2l6ZShyZXMpOworCisJcHJpdi0+cGFkZGluZ19ieXRlID0gcmVhZGIo YmFzZSArIHByaXYtPm52bWVtX3NpemUgLSAxKTsKKwlmb3IgKHByaXYtPmRhdGFfbGVuID0gcHJp di0+bnZtZW1fc2l6ZTsKKwkgICAgIHByaXYtPmRhdGFfbGVuOworCSAgICAgcHJpdi0+ZGF0YV9s ZW4tLSkgeworCQlpZiAocmVhZGIoYmFzZSArIHByaXYtPmRhdGFfbGVuIC0gMSkgIT0gcHJpdi0+ cGFkZGluZ19ieXRlKQorCQkJYnJlYWs7CisJfQorCVdBUk4ocHJpdi0+ZGF0YV9sZW4gPiBTWl8x MjhLLCAiVW5leHBlY3RlZCAoYmlnKSBOVlJBTSBzaXplOiAlenUgQlxuIiwgcHJpdi0+ZGF0YV9s ZW4pOworCisJcHJpdi0+ZGF0YSA9IGRldm1fa3phbGxvYyhwcml2LT5kZXYsIHByaXYtPmRhdGFf bGVuLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXYtPmRhdGEpCisJCXJldHVybiAtRU5PTUVNOwor CisJbWVtY3B5X2Zyb21pbyhwcml2LT5kYXRhLCBiYXNlLCBwcml2LT5kYXRhX2xlbik7CiAKLQl3 aGlsZSAoYnl0ZXMtLSkKLQkJKmRzdCsrID0gcmVhZGIocHJpdi0+YmFzZSArIG9mZnNldCsrKTsK KwliY200N3h4X252cmFtX2luaXRfZnJvbV9pb21lbShiYXNlLCBwcml2LT5kYXRhX2xlbik7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTY3LDggKzExNSwxMyBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1f YWRkX2NlbGxzKHN0cnVjdCBicmNtX252cmFtICpwcml2LCB1aW50OF90ICpkYXRhLAogCQkJCXNp emVfdCBsZW4pCiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gcHJpdi0+ZGV2OwotCWNoYXIgKnZh ciwgKnZhbHVlLCAqZXE7CisJY2hhciAqdmFyLCAqdmFsdWU7CisJdWludDhfdCB0bXA7CiAJaW50 IGlkeDsKKwlpbnQgZXJyID0gMDsKKworCXRtcCA9IHByaXYtPmRhdGFbbGVuIC0gMV07CisJcHJp di0+ZGF0YVtsZW4gLSAxXSA9ICdcMCc7CiAKIAlwcml2LT5uY2VsbHMgPSAwOwogCWZvciAodmFy ID0gZGF0YSArIHNpemVvZihzdHJ1Y3QgYnJjbV9udnJhbV9oZWFkZXIpOwpAQCAtNzgsNjcgKzEz MSw2OCBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1fYWRkX2NlbGxzKHN0cnVjdCBicmNtX252cmFt ICpwcml2LCB1aW50OF90ICpkYXRhLAogCX0KIAogCXByaXYtPmNlbGxzID0gZGV2bV9rY2FsbG9j KGRldiwgcHJpdi0+bmNlbGxzLCBzaXplb2YoKnByaXYtPmNlbGxzKSwgR0ZQX0tFUk5FTCk7Ci0J aWYgKCFwcml2LT5jZWxscykKLQkJcmV0dXJuIC1FTk9NRU07CisJaWYgKCFwcml2LT5jZWxscykg eworCQllcnIgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CiAKIAlmb3IgKHZhciA9IGRhdGEg KyBzaXplb2Yoc3RydWN0IGJyY21fbnZyYW1faGVhZGVyKSwgaWR4ID0gMDsKIAkgICAgIHZhciA8 IChjaGFyICopZGF0YSArIGxlbiAmJiAqdmFyOwogCSAgICAgdmFyID0gdmFsdWUgKyBzdHJsZW4o dmFsdWUpICsgMSwgaWR4KyspIHsKKwkJY2hhciAqZXEsICpuYW1lOworCiAJCWVxID0gc3RyY2hy KHZhciwgJz0nKTsKIAkJaWYgKCFlcSkKIAkJCWJyZWFrOwogCQkqZXEgPSAnXDAnOworCQluYW1l ID0gZGV2bV9rc3RyZHVwKGRldiwgdmFyLCBHRlBfS0VSTkVMKTsKKwkJKmVxID0gJz0nOworCQlp ZiAoIW5hbWUpIHsKKwkJCWVyciA9IC1FTk9NRU07CisJCQlnb3RvIG91dDsKKwkJfQogCQl2YWx1 ZSA9IGVxICsgMTsKIAotCQlwcml2LT5jZWxsc1tpZHhdLm5hbWUgPSBkZXZtX2tzdHJkdXAoZGV2 LCB2YXIsIEdGUF9LRVJORUwpOwotCQlpZiAoIXByaXYtPmNlbGxzW2lkeF0ubmFtZSkKLQkJCXJl dHVybiAtRU5PTUVNOworCQlwcml2LT5jZWxsc1tpZHhdLm5hbWUgPSBuYW1lOwogCQlwcml2LT5j ZWxsc1tpZHhdLm9mZnNldCA9IHZhbHVlIC0gKGNoYXIgKilkYXRhOwogCQlwcml2LT5jZWxsc1tp ZHhdLmJ5dGVzID0gc3RybGVuKHZhbHVlKTsKIAkJcHJpdi0+Y2VsbHNbaWR4XS5ucCA9IG9mX2dl dF9jaGlsZF9ieV9uYW1lKGRldi0+b2Zfbm9kZSwgcHJpdi0+Y2VsbHNbaWR4XS5uYW1lKTsKLQkJ aWYgKCFzdHJjbXAodmFyLCAiZXQwbWFjYWRkciIpIHx8Ci0JCSAgICAhc3RyY21wKHZhciwgImV0 MW1hY2FkZHIiKSB8fAotCQkgICAgIXN0cmNtcCh2YXIsICJldDJtYWNhZGRyIikpIHsKKwkJaWYg KCFzdHJjbXAobmFtZSwgImV0MG1hY2FkZHIiKSB8fAorCQkgICAgIXN0cmNtcChuYW1lLCAiZXQx bWFjYWRkciIpIHx8CisJCSAgICAhc3RyY21wKG5hbWUsICJldDJtYWNhZGRyIikpIHsKIAkJCXBy aXYtPmNlbGxzW2lkeF0ucmF3X2xlbiA9IHN0cmxlbih2YWx1ZSk7CiAJCQlwcml2LT5jZWxsc1tp ZHhdLmJ5dGVzID0gRVRIX0FMRU47CiAJCQlwcml2LT5jZWxsc1tpZHhdLnJlYWRfcG9zdF9wcm9j ZXNzID0gYnJjbV9udnJhbV9yZWFkX3Bvc3RfcHJvY2Vzc19tYWNhZGRyOwogCQl9CiAJfQogCi0J cmV0dXJuIDA7CitvdXQ6CisJcHJpdi0+ZGF0YVtsZW4gLSAxXSA9IHRtcDsKKwlyZXR1cm4gZXJy OwogfQogCiBzdGF0aWMgaW50IGJyY21fbnZyYW1fcGFyc2Uoc3RydWN0IGJyY21fbnZyYW0gKnBy aXYpCiB7CisJc3RydWN0IGJyY21fbnZyYW1faGVhZGVyICpoZWFkZXIgPSAoc3RydWN0IGJyY21f bnZyYW1faGVhZGVyICopcHJpdi0+ZGF0YTsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwcml2LT5k ZXY7Ci0Jc3RydWN0IGJyY21fbnZyYW1faGVhZGVyIGhlYWRlcjsKLQl1aW50OF90ICpkYXRhOwog CXNpemVfdCBsZW47CiAJaW50IGVycjsKIAotCW1lbWNweV9mcm9taW8oJmhlYWRlciwgcHJpdi0+ YmFzZSwgc2l6ZW9mKGhlYWRlcikpOwotCi0JaWYgKG1lbWNtcChoZWFkZXIubWFnaWMsIE5WUkFN X01BR0lDLCA0KSkgeworCWlmIChtZW1jbXAoaGVhZGVyLT5tYWdpYywgTlZSQU1fTUFHSUMsIDQp KSB7CiAJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBOVlJBTSBtYWdpY1xuIik7CiAJCXJldHVybiAt RUlOVkFMOwogCX0KIAotCWxlbiA9IGxlMzJfdG9fY3B1KGhlYWRlci5sZW4pOwotCi0JZGF0YSA9 IGt6YWxsb2MobGVuLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWRhdGEpCi0JCXJldHVybiAtRU5PTUVN OwotCi0JbWVtY3B5X2Zyb21pbyhkYXRhLCBwcml2LT5iYXNlLCBsZW4pOwotCWRhdGFbbGVuIC0g MV0gPSAnXDAnOwotCi0JZXJyID0gYnJjbV9udnJhbV9hZGRfY2VsbHMocHJpdiwgZGF0YSwgbGVu KTsKLQlpZiAoZXJyKSB7Ci0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBjZWxsczogJWRc biIsIGVycik7Ci0JCXJldHVybiBlcnI7CisJbGVuID0gbGUzMl90b19jcHUoaGVhZGVyLT5sZW4p OworCWlmIChsZW4gPiBwcml2LT5udm1lbV9zaXplKSB7CisJCWRldl9lcnIoZGV2LCAiTlZSQU0g bGVuZ3RoICglemQpIGV4Y2VlZHMgbWFwcGVkIHNpemUgKCV6ZClcbiIsIGxlbiwKKwkJCXByaXYt Pm52bWVtX3NpemUpOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlrZnJlZShkYXRhKTsKKwll cnIgPSBicmNtX252cmFtX2FkZF9jZWxscyhwcml2LCBwcml2LT5kYXRhLCBsZW4pOworCWlmIChl cnIpCisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBjZWxsczogJWRcbiIsIGVycik7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTE1MCw3ICsyMDQsNiBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1f cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJLnJlZ19yZWFkID0gYnJjbV9u dnJhbV9yZWFkLAogCX07CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKLQlzdHJ1 Y3QgcmVzb3VyY2UgKnJlczsKIAlzdHJ1Y3QgYnJjbV9udnJhbSAqcHJpdjsKIAlpbnQgZXJyOwog CkBAIC0xNTksMjEgKzIxMiwxOSBAQCBzdGF0aWMgaW50IGJyY21fbnZyYW1fcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcmV0dXJuIC1FTk9NRU07CiAJcHJpdi0+ZGV2ID0g ZGV2OwogCi0JcHJpdi0+YmFzZSA9IGRldm1fcGxhdGZvcm1fZ2V0X2FuZF9pb3JlbWFwX3Jlc291 cmNlKHBkZXYsIDAsICZyZXMpOwotCWlmIChJU19FUlIocHJpdi0+YmFzZSkpCi0JCXJldHVybiBQ VFJfRVJSKHByaXYtPmJhc2UpOworCWVyciA9IGJyY21fbnZyYW1fY29weV9kYXRhKHByaXYsIHBk ZXYpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CiAKIAllcnIgPSBicmNtX252cmFtX3BhcnNl KHByaXYpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQliY200N3h4X252cmFtX2luaXRf ZnJvbV9pb21lbShwcml2LT5iYXNlLCByZXNvdXJjZV9zaXplKHJlcykpOwotCiAJY29uZmlnLmRl diA9IGRldjsKIAljb25maWcuY2VsbHMgPSBwcml2LT5jZWxsczsKIAljb25maWcubmNlbGxzID0g cHJpdi0+bmNlbGxzOwogCWNvbmZpZy5wcml2ID0gcHJpdjsKLQljb25maWcuc2l6ZSA9IHJlc291 cmNlX3NpemUocmVzKTsKKwljb25maWcuc2l6ZSA9IHByaXYtPm52bWVtX3NpemU7CiAKIAlyZXR1 cm4gUFRSX0VSUl9PUl9aRVJPKGRldm1fbnZtZW1fcmVnaXN0ZXIoZGV2LCAmY29uZmlnKSk7CiB9 Ci0tIAoyLjM1LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg== 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13B96C25B6B for ; Thu, 26 Oct 2023 07:35:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344411AbjJZHfR (ORCPT ); Thu, 26 Oct 2023 03:35:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229715AbjJZHfP (ORCPT ); Thu, 26 Oct 2023 03:35:15 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D4ABD6 for ; Thu, 26 Oct 2023 00:35:09 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-50816562320so707470e87.3 for ; Thu, 26 Oct 2023 00:35:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698305707; x=1698910507; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=hJZ6wfm0bTuqieUHXEKtRuJrDeks5L6l8rWKf4hHJEo=; b=TngL/zmJZaURwMCP5/htZ/7voWYDEOowQiXsB8tTuyJ3UI/XnY9l+Scx0H+Ysob/eN fHV5RM48QhHLB19dO6dBztAiBb6+0k36Qt8bVN4fs0zoDwTLsER8PBfn4GxhJiOigBpN EHa4Gq42phQscmDcZwgtF/0Z+dUnsRhsXS9UjmLQLt2pBDfttbc7w6mtCmoZNYTqkecV xesBWS9DWXrlIkb0pWCZukOKDTSWd5vi4Ey5ORDmiNBnc8VJECG0K49h+65jZsAH/LXK mejDYL3Y+n7kO9dZhEUEvXtaneyMUyZr6PzW0oYZDpYp/4aQm3TgFekYItXpsiHdEe9T m4CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698305707; x=1698910507; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hJZ6wfm0bTuqieUHXEKtRuJrDeks5L6l8rWKf4hHJEo=; b=rr0TCZRwkeazKBZLIWHQsbyduqCZo91GIhqYk5O/zq83GbBTYJCiZAOGemybfl0Dpv HtvElYt/gw/8Qgna/NswwKJHlCvboKD3SULPfn5E/uINzdsOXelrbYv4FWu6jYPxsR11 OW9LD+enZ7g8tKrvu3/jI550zfPucW6QOcbGPqYT4/P0l5DZEWaNKvBAp29EO2Ws7XwO 4pQttUJKslp5dDgD2pDr3ysg3WInggacVhRX7G1M0IC28m/j7GDdz9NH+ZO3fmsyp7Is NXaWCBGNjzI8jzoqWbQ/1oAkW3TCR7kMaHe/U6LN4KXfkHJG6T1JMGLk85kGmlUFva3V hotw== X-Gm-Message-State: AOJu0Yy4uPYkfhonHTwUlydGSu0dHJA7N9l4wfJ6ev75VVi0rwT/OBmy ZTK/Gbe2wvmNF8TN29NenJA= X-Google-Smtp-Source: AGHT+IF1kDUFN0AdnY4R0HavPdl604V/76H23E4wqzAPj8PJLLQTSSq1movSs/LWlTbRJ2bShRj4gg== X-Received: by 2002:a05:6512:3d29:b0:507:ba28:1bc5 with SMTP id d41-20020a0565123d2900b00507ba281bc5mr15172418lfv.3.1698305707045; Thu, 26 Oct 2023 00:35:07 -0700 (PDT) Received: from localhost.lan (031011218106.poznan.vectranet.pl. [31.11.218.106]) by smtp.gmail.com with ESMTPSA id x12-20020a056512078c00b00507a4661f76sm2895189lfr.145.2023.10.26.00.35.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Oct 2023 00:35:06 -0700 (PDT) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla Cc: linux-mtd@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= , Florian Fainelli , Scott Branden Subject: [PATCH V2] nvmem: brcm_nvram: store a copy of NVRAM content Date: Thu, 26 Oct 2023 09:34:40 +0200 Message-Id: <20231026073440.6724-1-zajec5@gmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rafał Miłecki This driver uses MMIO access for reading NVRAM from a flash device. Underneath there is a flash controller that reads data and provides mapping window. Using MMIO interface affects controller configuration and may break real controller driver. It was reported by multiple users of devices with NVRAM stored on NAND. Modify driver to read & cache NVRAM content during init and use that copy to provide NVMEM data when requested. On NAND flashes due to their alignment NVRAM partitions can be quite big (1 MiB and more) while actual NVRAM content stays quite small (usually 16 to 32 KiB). To avoid allocating so much memory check for actual data length. Link: https://lore.kernel.org/linux-mtd/CACna6rwf3_9QVjYcM+847biTX=K0EoWXuXcSMkJO1Vy_5vmVqA@mail.gmail.com/ Fixes: 3fef9ed0627a ("nvmem: brcm_nvram: new driver exposing Broadcom's NVRAM") Cc: Arınç ÜNAL Cc: Florian Fainelli Cc: Scott Branden Signed-off-by: Rafał Miłecki --- V2: Minialize amount of allocated memory (check for actual data length) drivers/nvmem/brcm_nvram.c | 131 ++++++++++++++++++++++++++----------- 1 file changed, 91 insertions(+), 40 deletions(-) diff --git a/drivers/nvmem/brcm_nvram.c b/drivers/nvmem/brcm_nvram.c index 9737104f3b76..fbd133732bba 100644 --- a/drivers/nvmem/brcm_nvram.c +++ b/drivers/nvmem/brcm_nvram.c @@ -17,9 +17,20 @@ #define NVRAM_MAGIC "FLSH" +/** + * struct brcm_nvram - driver state internal struct + * + * @nvmem_size: Size of the whole space available for NVRAM + * @data: NVRAM data copy stored to avoid poking underlaying flash controller + * @data_len: NVRAM data size + * @padding_byte: Padding value used to fill remaining space + */ struct brcm_nvram { struct device *dev; - void __iomem *base; + size_t nvmem_size; + uint8_t *data; + size_t data_len; + uint8_t padding_byte; struct nvmem_cell_info *cells; int ncells; }; @@ -36,10 +47,47 @@ static int brcm_nvram_read(void *context, unsigned int offset, void *val, size_t bytes) { struct brcm_nvram *priv = context; - u8 *dst = val; + size_t to_copy; + + if (offset + bytes > priv->data_len) + to_copy = max_t(ssize_t, (ssize_t)priv->data_len - offset, 0); + else + to_copy = bytes; + + memcpy(val, priv->data + offset, to_copy); + + memset((uint8_t *)val + to_copy, priv->padding_byte, bytes - to_copy); + + return 0; +} + +static int brcm_nvram_copy_data(struct brcm_nvram *priv, struct platform_device *pdev) +{ + struct resource *res; + void __iomem *base; + + base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); + if (IS_ERR(base)) + return PTR_ERR(base); + + priv->nvmem_size = resource_size(res); + + priv->padding_byte = readb(base + priv->nvmem_size - 1); + for (priv->data_len = priv->nvmem_size; + priv->data_len; + priv->data_len--) { + if (readb(base + priv->data_len - 1) != priv->padding_byte) + break; + } + WARN(priv->data_len > SZ_128K, "Unexpected (big) NVRAM size: %zu B\n", priv->data_len); + + priv->data = devm_kzalloc(priv->dev, priv->data_len, GFP_KERNEL); + if (!priv->data) + return -ENOMEM; + + memcpy_fromio(priv->data, base, priv->data_len); - while (bytes--) - *dst++ = readb(priv->base + offset++); + bcm47xx_nvram_init_from_iomem(base, priv->data_len); return 0; } @@ -67,8 +115,13 @@ static int brcm_nvram_add_cells(struct brcm_nvram *priv, uint8_t *data, size_t len) { struct device *dev = priv->dev; - char *var, *value, *eq; + char *var, *value; + uint8_t tmp; int idx; + int err = 0; + + tmp = priv->data[len - 1]; + priv->data[len - 1] = '\0'; priv->ncells = 0; for (var = data + sizeof(struct brcm_nvram_header); @@ -78,67 +131,68 @@ static int brcm_nvram_add_cells(struct brcm_nvram *priv, uint8_t *data, } priv->cells = devm_kcalloc(dev, priv->ncells, sizeof(*priv->cells), GFP_KERNEL); - if (!priv->cells) - return -ENOMEM; + if (!priv->cells) { + err = -ENOMEM; + goto out; + } for (var = data + sizeof(struct brcm_nvram_header), idx = 0; var < (char *)data + len && *var; var = value + strlen(value) + 1, idx++) { + char *eq, *name; + eq = strchr(var, '='); if (!eq) break; *eq = '\0'; + name = devm_kstrdup(dev, var, GFP_KERNEL); + *eq = '='; + if (!name) { + err = -ENOMEM; + goto out; + } value = eq + 1; - priv->cells[idx].name = devm_kstrdup(dev, var, GFP_KERNEL); - if (!priv->cells[idx].name) - return -ENOMEM; + priv->cells[idx].name = name; priv->cells[idx].offset = value - (char *)data; priv->cells[idx].bytes = strlen(value); priv->cells[idx].np = of_get_child_by_name(dev->of_node, priv->cells[idx].name); - if (!strcmp(var, "et0macaddr") || - !strcmp(var, "et1macaddr") || - !strcmp(var, "et2macaddr")) { + if (!strcmp(name, "et0macaddr") || + !strcmp(name, "et1macaddr") || + !strcmp(name, "et2macaddr")) { priv->cells[idx].raw_len = strlen(value); priv->cells[idx].bytes = ETH_ALEN; priv->cells[idx].read_post_process = brcm_nvram_read_post_process_macaddr; } } - return 0; +out: + priv->data[len - 1] = tmp; + return err; } static int brcm_nvram_parse(struct brcm_nvram *priv) { + struct brcm_nvram_header *header = (struct brcm_nvram_header *)priv->data; struct device *dev = priv->dev; - struct brcm_nvram_header header; - uint8_t *data; size_t len; int err; - memcpy_fromio(&header, priv->base, sizeof(header)); - - if (memcmp(header.magic, NVRAM_MAGIC, 4)) { + if (memcmp(header->magic, NVRAM_MAGIC, 4)) { dev_err(dev, "Invalid NVRAM magic\n"); return -EINVAL; } - len = le32_to_cpu(header.len); - - data = kzalloc(len, GFP_KERNEL); - if (!data) - return -ENOMEM; - - memcpy_fromio(data, priv->base, len); - data[len - 1] = '\0'; - - err = brcm_nvram_add_cells(priv, data, len); - if (err) { - dev_err(dev, "Failed to add cells: %d\n", err); - return err; + len = le32_to_cpu(header->len); + if (len > priv->nvmem_size) { + dev_err(dev, "NVRAM length (%zd) exceeds mapped size (%zd)\n", len, + priv->nvmem_size); + return -EINVAL; } - kfree(data); + err = brcm_nvram_add_cells(priv, priv->data, len); + if (err) + dev_err(dev, "Failed to add cells: %d\n", err); return 0; } @@ -150,7 +204,6 @@ static int brcm_nvram_probe(struct platform_device *pdev) .reg_read = brcm_nvram_read, }; struct device *dev = &pdev->dev; - struct resource *res; struct brcm_nvram *priv; int err; @@ -159,21 +212,19 @@ static int brcm_nvram_probe(struct platform_device *pdev) return -ENOMEM; priv->dev = dev; - priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); - if (IS_ERR(priv->base)) - return PTR_ERR(priv->base); + err = brcm_nvram_copy_data(priv, pdev); + if (err) + return err; err = brcm_nvram_parse(priv); if (err) return err; - bcm47xx_nvram_init_from_iomem(priv->base, resource_size(res)); - config.dev = dev; config.cells = priv->cells; config.ncells = priv->ncells; config.priv = priv; - config.size = resource_size(res); + config.size = priv->nvmem_size; return PTR_ERR_OR_ZERO(devm_nvmem_register(dev, &config)); } -- 2.35.3