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 DB9B9C636D6 for ; Wed, 22 Feb 2023 17:24:33 +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=aAmaZhmjoqmKPCuoRZjgVnmNO6IxvdMgLoNMjSfwOo8=; b=HbKRTbflCbNWSc eDYsWLm5MEUTH3xgl37WKKw5Mme2bVYqsYmvhfrclsf1q/FCRiSDiHGYM5FnFs7X3X0tyo6HorKLe ZSGU31x8G6JQAbyQFBIq+jUGf26NojuKiRMf7mHsRf5ehZ6QTeMG88KLwZFK7ZXf/LtQ/tAuCF+Ao mmDR8hH4T6eo6XTW9SMhJfSGsVHenAiQcJ5rsm6MehxQdyJn+iWnww+rlMku81KRI8qzj8DVojHVY QaQXWXARRmM9pkNH5GDvdLNGWFWGKG0/7NtQK5l0Gs8HQXelw01+vutrfmQsHEs2MtRfv9nm7O/03 VS0mVab7aoSI7ybOtMxw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pUsq8-00DCVd-CK; Wed, 22 Feb 2023 17:23:36 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pUspt-00DCOr-NK for linux-arm-kernel@lists.infradead.org; Wed, 22 Feb 2023 17:23:23 +0000 Received: by mail-lj1-x22b.google.com with SMTP id j17so8771315ljq.11 for ; Wed, 22 Feb 2023 09:23:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VPXTaQZVL1HaoQxVYcZ7bgZixI9kr2H6DQ4AJLyVX08=; b=JVTkaMHZYEnCKdfREkIj6XRcyyViNk24I0n/UWNbyLNb2A7GtCYUtJSpVDxiQArYmi CG4e3yzPEfNfYp47Ma1bMw6mJ30JkEiZSIuaFfTK29X1cMqStblNJQxU+tx7gy+b2Uyn d/MtlK4o91g5oq9Tvv5nPp7+zmBUi/coznt6APtwb969s1OQTxRwOXTETGfi9MtvV7/R 7ZOIkkf+ubHto2YRcnk7rvriD9BQWOGwiB2K9A5xyM6oKXJCfrqDRUqGjByMBmbacnij t96xUlk5Z0k9bTUEsHI1VLaLzxGZ+FnS0Db+299mJZWcoSvO0kLBSurak0T2KWHjl1Ct xzbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VPXTaQZVL1HaoQxVYcZ7bgZixI9kr2H6DQ4AJLyVX08=; b=F/DC2Iyv1XI6OFudXGDr3rTpN8WkdfKcPMKwYLpPjaY/7ppaAQXSEg6H1wo0e5nyMP vvS6QT+7MLsIATAEFGpU1RAictWvAHDdIO2mYKIItDLgRSojBKAfX9AIjRUnqEcVa81y s3SogwhJsdya5KGdqN5xxq0Mpna5eYpDMBNo6p412qaK6/S/SpbwZD3bus1WsS4yd2nP ffkaTAC1hkse3OnMXV9ZCoGjrVOPUVehZpyNp7DDNLajjKwlZMAxSme1LLCbPGVQVaGd uXaJaw0Kl9NkCSB0XOrNDEU7OyZROFAiKonJTUtw5jEpGsgAtOhOp5u1vaU+mtuXzxU0 L08A== X-Gm-Message-State: AO0yUKWXbTHTlILv3dcTOxwDgXMVY1lepolncT/EWQOjRWgUcVNw5iDv 0Mtj8awGS4yHGdhME/TEU1c= X-Google-Smtp-Source: AK7set/EU7q0KWY7dsZ7Mukk83wrPkUwjZvHgB1oGSC/JUNVtEHyNq1yZkTIBojqrPd25FkooTqkJA== X-Received: by 2002:a05:651c:b06:b0:295:733a:3463 with SMTP id b6-20020a05651c0b0600b00295733a3463mr4824738ljr.29.1677086597753; Wed, 22 Feb 2023 09:23:17 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id p2-20020a2e93c2000000b0029477417d80sm721513ljh.85.2023.02.22.09.23.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Feb 2023 09:23:17 -0800 (PST) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski Cc: Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Miquel Raynal , Michael Walle , gregkh@linuxfoundation.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, u-boot@lists.denx.de, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Subject: [PATCH 2/4] nvmem: core: allow nvmem_cell_post_process_t callbacks to adjust buffer Date: Wed, 22 Feb 2023 18:22:43 +0100 Message-Id: <20230222172245.6313-3-zajec5@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230222172245.6313-1-zajec5@gmail.com> References: <20230222172245.6313-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230222_092321_792070_60C6E060 X-CRM114-Status: GOOD ( 18.89 ) 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 RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKU29tZXRpbWVzIHJlYWRp bmcgTlZNRU0gY2VsbCB2YWx1ZSBpbnZvbHZlcyBzb21lIGRhdGEgcmVmb3JtYXR0aW5nLiBpdApt YXkgcmVxdWlyZSByZXNpemluZyBhdmFpbGFibGUgYnVmZmVyLiBTdXBwb3J0IHRoYXQuCgpJdCdz IHJlcXVpcmVkIGUuZy4gdG8gcHJvdmlkZSBwcm9wZXJseSBmb3JtYXR0ZWQgTUFDIGFkZHJlc3Mg aW4gY2FzZQppdCdzIHN0b3JlZCBpbiBhIG5vbi1iaW5hcnkgZm9ybWF0IChlLmcuIHVzaW5nIEFT Q0lJKS4KClNpZ25lZC1vZmYtYnk6IFJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4K LS0tCiBkcml2ZXJzL252bWVtL2NvcmUuYyAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKy0t LS0tLS0tLQogZHJpdmVycy9udm1lbS9pbXgtb2NvdHAuYyAgICAgIHwgIDggKysrKy0tLS0KIGlu Y2x1ZGUvbGludXgvbnZtZW0tcHJvdmlkZXIuaCB8ICA0ICsrLS0KIDMgZmlsZXMgY2hhbmdlZCwg MjAgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u dm1lbS9jb3JlLmMgYi9kcml2ZXJzL252bWVtL2NvcmUuYwppbmRleCBjNWM5YTQ2NTQyNDEuLjE4 ZmJmYmY2MWVjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lbS9jb3JlLmMKKysrIGIvZHJpdmVy cy9udm1lbS9jb3JlLmMKQEAgLTE0MTgsMzUgKzE0MTgsMzYgQEAgc3RhdGljIHZvaWQgbnZtZW1f c2hpZnRfcmVhZF9idWZmZXJfaW5fcGxhY2Uoc3RydWN0IG52bWVtX2NlbGxfZW50cnkgKmNlbGws IHZvaWQKIAogc3RhdGljIGludCBfX252bWVtX2NlbGxfcmVhZChzdHJ1Y3QgbnZtZW1fZGV2aWNl ICpudm1lbSwKIAkJCSAgICAgc3RydWN0IG52bWVtX2NlbGxfZW50cnkgKmNlbGwsCi0JCQkgICAg IHZvaWQgKmJ1Ziwgc2l6ZV90ICpsZW4sIGNvbnN0IGNoYXIgKmlkLCBpbnQgaW5kZXgpCisJCQkg ICAgIHZvaWQgKipidWYsIHNpemVfdCAqbGVuLCBjb25zdCBjaGFyICppZCwgaW50IGluZGV4KQog eworCXNpemVfdCBieXRlcyA9IGNlbGwtPmJ5dGVzOwogCWludCByYzsKIAotCXJjID0gbnZtZW1f cmVnX3JlYWQobnZtZW0sIGNlbGwtPm9mZnNldCwgYnVmLCBjZWxsLT5ieXRlcyk7CisJcmMgPSBu dm1lbV9yZWdfcmVhZChudm1lbSwgY2VsbC0+b2Zmc2V0LCAqYnVmLCBieXRlcyk7CiAKIAlpZiAo cmMpCiAJCXJldHVybiByYzsKIAogCS8qIHNoaWZ0IGJpdHMgaW4tcGxhY2UgKi8KIAlpZiAoY2Vs bC0+Yml0X29mZnNldCB8fCBjZWxsLT5uYml0cykKLQkJbnZtZW1fc2hpZnRfcmVhZF9idWZmZXJf aW5fcGxhY2UoY2VsbCwgYnVmKTsKKwkJbnZtZW1fc2hpZnRfcmVhZF9idWZmZXJfaW5fcGxhY2Uo Y2VsbCwgKmJ1Zik7CiAKIAlpZiAoY2VsbC0+cmVhZF9wb3N0X3Byb2Nlc3MpIHsKIAkJcmMgPSBj ZWxsLT5yZWFkX3Bvc3RfcHJvY2Vzcyhudm1lbS0+cHJpdiwgaWQsIGluZGV4LAotCQkJCQkgICAg IGNlbGwtPm9mZnNldCwgYnVmLCBjZWxsLT5ieXRlcyk7CisJCQkJCSAgICAgY2VsbC0+b2Zmc2V0 LCBidWYsICZieXRlcyk7CiAJCWlmIChyYykKIAkJCXJldHVybiByYzsKIAl9CiAKIAlpZiAobnZt ZW0tPmNlbGxfcG9zdF9wcm9jZXNzKSB7CiAJCXJjID0gbnZtZW0tPmNlbGxfcG9zdF9wcm9jZXNz KG52bWVtLT5wcml2LCBpZCwgaW5kZXgsCi0JCQkJCSAgICAgIGNlbGwtPm9mZnNldCwgYnVmLCBj ZWxsLT5ieXRlcyk7CisJCQkJCSAgICAgIGNlbGwtPm9mZnNldCwgYnVmLCAmYnl0ZXMpOwogCQlp ZiAocmMpCiAJCQlyZXR1cm4gcmM7CiAJfQogCiAJaWYgKGxlbikKLQkJKmxlbiA9IGNlbGwtPmJ5 dGVzOworCQkqbGVuID0gYnl0ZXM7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0NjQsNyArMTQ2NSw3 IEBAIHN0YXRpYyBpbnQgX19udm1lbV9jZWxsX3JlYWQoc3RydWN0IG52bWVtX2RldmljZSAqbnZt ZW0sCiB2b2lkICpudm1lbV9jZWxsX3JlYWQoc3RydWN0IG52bWVtX2NlbGwgKmNlbGwsIHNpemVf dCAqbGVuKQogewogCXN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtID0gY2VsbC0+ZW50cnktPm52 bWVtOwotCXU4ICpidWY7CisJdm9pZCAqYnVmOwogCWludCByYzsKIAogCWlmICghbnZtZW0pCkBA IC0xNDc0LDcgKzE0NzUsNyBAQCB2b2lkICpudm1lbV9jZWxsX3JlYWQoc3RydWN0IG52bWVtX2Nl bGwgKmNlbGwsIHNpemVfdCAqbGVuKQogCWlmICghYnVmKQogCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKIAotCXJjID0gX19udm1lbV9jZWxsX3JlYWQobnZtZW0sIGNlbGwtPmVudHJ5LCBidWYs IGxlbiwgY2VsbC0+aWQsIGNlbGwtPmluZGV4KTsKKwlyYyA9IF9fbnZtZW1fY2VsbF9yZWFkKG52 bWVtLCBjZWxsLT5lbnRyeSwgJmJ1ZiwgbGVuLCBjZWxsLT5pZCwgY2VsbC0+aW5kZXgpOwogCWlm IChyYykgewogCQlrZnJlZShidWYpOwogCQlyZXR1cm4gRVJSX1BUUihyYyk7CkBAIC0xNzkxLDEx ICsxNzkyLDE1IEBAIHNzaXplX3QgbnZtZW1fZGV2aWNlX2NlbGxfcmVhZChzdHJ1Y3QgbnZtZW1f ZGV2aWNlICpudm1lbSwKIAlpZiAoIW52bWVtKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCS8qIENl bGxzIHdpdGggcmVhZF9wb3N0X3Byb2Nlc3MgaG9vayBtYXkgcmVhbGxvYyBidWZmZXIgd2UgY2Fu J3QgYWxsb3cgaGVyZSAqLworCWlmIChpbmZvLT5yZWFkX3Bvc3RfcHJvY2VzcykKKwkJcmV0dXJu IC1FSU5WQUw7CisKIAlyYyA9IG52bWVtX2NlbGxfaW5mb190b19udm1lbV9jZWxsX2VudHJ5X25v ZHVwKG52bWVtLCBpbmZvLCAmY2VsbCk7CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CiAKLQlyYyA9 IF9fbnZtZW1fY2VsbF9yZWFkKG52bWVtLCAmY2VsbCwgYnVmLCAmbGVuLCBOVUxMLCAwKTsKKwly YyA9IF9fbnZtZW1fY2VsbF9yZWFkKG52bWVtLCAmY2VsbCwgJmJ1ZiwgJmxlbiwgTlVMTCwgMCk7 CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZW0vaW14 LW9jb3RwLmMgYi9kcml2ZXJzL252bWVtL2lteC1vY290cC5jCmluZGV4IGUzN2E4MmY5OGJhNi4u MGUwYWIyN2NiZmUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWVtL2lteC1vY290cC5jCisrKyBi L2RyaXZlcnMvbnZtZW0vaW14LW9jb3RwLmMKQEAgLTIyMywxOCArMjIzLDE4IEBAIHN0YXRpYyBp bnQgaW14X29jb3RwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IG9mZnNldCwKIH0K IAogc3RhdGljIGludCBpbXhfb2NvdHBfY2VsbF9wcCh2b2lkICpjb250ZXh0LCBjb25zdCBjaGFy ICppZCwgaW50IGluZGV4LAotCQkJICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICpkYXRh LCBzaXplX3QgYnl0ZXMpCisJCQkgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKipkYXRh LCBzaXplX3QgKmJ5dGVzKQogewogCXN0cnVjdCBvY290cF9wcml2ICpwcml2ID0gY29udGV4dDsK IAogCS8qIERlYWwgd2l0aCBzb21lIHBvc3QgcHJvY2Vzc2luZyBvZiBudm1lbSBjZWxsIGRhdGEg Ki8KIAlpZiAoaWQgJiYgIXN0cmNtcChpZCwgIm1hYy1hZGRyZXNzIikpIHsKIAkJaWYgKHByaXYt PnBhcmFtcy0+cmV2ZXJzZV9tYWNfYWRkcmVzcykgewotCQkJdTggKmJ1ZiA9IGRhdGE7CisJCQl1 OCAqYnVmID0gKmRhdGE7CiAJCQlpbnQgaTsKIAotCQkJZm9yIChpID0gMDsgaSA8IGJ5dGVzLzI7 IGkrKykKLQkJCQlzd2FwKGJ1ZltpXSwgYnVmW2J5dGVzIC0gaSAtIDFdKTsKKwkJCWZvciAoaSA9 IDA7IGkgPCAqYnl0ZXMgLyAyOyBpKyspCisJCQkJc3dhcChidWZbaV0sIGJ1ZlsqYnl0ZXMgLSBp IC0gMV0pOwogCQl9CiAJfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L252bWVtLXByb3Zp ZGVyLmggYi9pbmNsdWRlL2xpbnV4L252bWVtLXByb3ZpZGVyLmgKaW5kZXggZjg3ZmQ2NGVlZThm Li45YzIxMmY3YmI3ZDEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbnZtZW0tcHJvdmlkZXIu aAorKysgYi9pbmNsdWRlL2xpbnV4L252bWVtLXByb3ZpZGVyLmgKQEAgLTE5LDggKzE5LDggQEAg dHlwZWRlZiBpbnQgKCpudm1lbV9yZWdfcmVhZF90KSh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQg b2Zmc2V0LAogdHlwZWRlZiBpbnQgKCpudm1lbV9yZWdfd3JpdGVfdCkodm9pZCAqcHJpdiwgdW5z aWduZWQgaW50IG9mZnNldCwKIAkJCQkgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpOwogLyogdXNl ZCBmb3IgdmVuZG9yIHNwZWNpZmljIHBvc3QgcHJvY2Vzc2luZyBvZiBjZWxsIGRhdGEgKi8KLXR5 cGVkZWYgaW50ICgqbnZtZW1fY2VsbF9wb3N0X3Byb2Nlc3NfdCkodm9pZCAqcHJpdiwgY29uc3Qg Y2hhciAqaWQsIGludCBpbmRleCwKLQkJCQkJIHVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKmJ1 Ziwgc2l6ZV90IGJ5dGVzKTsKK3R5cGVkZWYgaW50ICgqbnZtZW1fY2VsbF9wb3N0X3Byb2Nlc3Nf dCkodm9pZCAqcHJpdiwgY29uc3QgY2hhciAqaWQsIGludCBpbmRleCwgdW5zaWduZWQgaW50IG9m ZnNldCwKKwkJCQkJIHZvaWQgKipidWYsIHNpemVfdCAqYnl0ZXMpOwogCiBlbnVtIG52bWVtX3R5 cGUgewogCU5WTUVNX1RZUEVfVU5LTk9XTiA9IDAsCi0tIAoyLjM0LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== 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 9802CC64EC7 for ; Wed, 22 Feb 2023 17:23:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232696AbjBVRX0 (ORCPT ); Wed, 22 Feb 2023 12:23:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232650AbjBVRXW (ORCPT ); Wed, 22 Feb 2023 12:23:22 -0500 Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B978619F; Wed, 22 Feb 2023 09:23:19 -0800 (PST) Received: by mail-lj1-x232.google.com with SMTP id y14so1477443ljq.4; Wed, 22 Feb 2023 09:23:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VPXTaQZVL1HaoQxVYcZ7bgZixI9kr2H6DQ4AJLyVX08=; b=JVTkaMHZYEnCKdfREkIj6XRcyyViNk24I0n/UWNbyLNb2A7GtCYUtJSpVDxiQArYmi CG4e3yzPEfNfYp47Ma1bMw6mJ30JkEiZSIuaFfTK29X1cMqStblNJQxU+tx7gy+b2Uyn d/MtlK4o91g5oq9Tvv5nPp7+zmBUi/coznt6APtwb969s1OQTxRwOXTETGfi9MtvV7/R 7ZOIkkf+ubHto2YRcnk7rvriD9BQWOGwiB2K9A5xyM6oKXJCfrqDRUqGjByMBmbacnij t96xUlk5Z0k9bTUEsHI1VLaLzxGZ+FnS0Db+299mJZWcoSvO0kLBSurak0T2KWHjl1Ct xzbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VPXTaQZVL1HaoQxVYcZ7bgZixI9kr2H6DQ4AJLyVX08=; b=oRwDsHYJ64IapYjyPAT0RtlYFbLVIMTRQp4Px5aF/NTAYmzvO8uP1ScRYPdKPMo0wi sHFjTWTidblsSJh4uuWzQLQG5z+uxsvHVurDO4Ake4NhA752PcfN2pSVN9fmCBz+XYDl xNUoTzgDTGwVDQmNTTfsJUEQxNrvmdwdWjK4tuxLPd4ydVUayOBsKWQngGTbl+Np8uB3 9ReJemO1Ysw1KS4dPOX4AQ7nZlcn7d3n10/zJGrwFcWQ9X+vfElCkzr5FrO1leMdcpoL 076ESKcnTRsLa+UWvKMA3qxOCsarr4p/+fwfTW7yrOx1ac84mxJMFopuH2XlOOlZlPnS UuLQ== X-Gm-Message-State: AO0yUKW+R6ga9QGsmhzF6sScaxk75+TwYQ2cINxt4SZ/r0dZo/c2A5AW 9pZKoCEl0KPQhb9yQpeE2i0= X-Google-Smtp-Source: AK7set/EU7q0KWY7dsZ7Mukk83wrPkUwjZvHgB1oGSC/JUNVtEHyNq1yZkTIBojqrPd25FkooTqkJA== X-Received: by 2002:a05:651c:b06:b0:295:733a:3463 with SMTP id b6-20020a05651c0b0600b00295733a3463mr4824738ljr.29.1677086597753; Wed, 22 Feb 2023 09:23:17 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id p2-20020a2e93c2000000b0029477417d80sm721513ljh.85.2023.02.22.09.23.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Feb 2023 09:23:17 -0800 (PST) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski Cc: Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Miquel Raynal , Michael Walle , gregkh@linuxfoundation.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, u-boot@lists.denx.de, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Subject: [PATCH 2/4] nvmem: core: allow nvmem_cell_post_process_t callbacks to adjust buffer Date: Wed, 22 Feb 2023 18:22:43 +0100 Message-Id: <20230222172245.6313-3-zajec5@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230222172245.6313-1-zajec5@gmail.com> References: <20230222172245.6313-1-zajec5@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Rafał Miłecki Sometimes reading NVMEM cell value involves some data reformatting. it may require resizing available buffer. Support that. It's required e.g. to provide properly formatted MAC address in case it's stored in a non-binary format (e.g. using ASCII). Signed-off-by: Rafał Miłecki --- drivers/nvmem/core.c | 23 ++++++++++++++--------- drivers/nvmem/imx-ocotp.c | 8 ++++---- include/linux/nvmem-provider.h | 4 ++-- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index c5c9a4654241..18fbfbf61ec3 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -1418,35 +1418,36 @@ static void nvmem_shift_read_buffer_in_place(struct nvmem_cell_entry *cell, void static int __nvmem_cell_read(struct nvmem_device *nvmem, struct nvmem_cell_entry *cell, - void *buf, size_t *len, const char *id, int index) + void **buf, size_t *len, const char *id, int index) { + size_t bytes = cell->bytes; int rc; - rc = nvmem_reg_read(nvmem, cell->offset, buf, cell->bytes); + rc = nvmem_reg_read(nvmem, cell->offset, *buf, bytes); if (rc) return rc; /* shift bits in-place */ if (cell->bit_offset || cell->nbits) - nvmem_shift_read_buffer_in_place(cell, buf); + nvmem_shift_read_buffer_in_place(cell, *buf); if (cell->read_post_process) { rc = cell->read_post_process(nvmem->priv, id, index, - cell->offset, buf, cell->bytes); + cell->offset, buf, &bytes); if (rc) return rc; } if (nvmem->cell_post_process) { rc = nvmem->cell_post_process(nvmem->priv, id, index, - cell->offset, buf, cell->bytes); + cell->offset, buf, &bytes); if (rc) return rc; } if (len) - *len = cell->bytes; + *len = bytes; return 0; } @@ -1464,7 +1465,7 @@ static int __nvmem_cell_read(struct nvmem_device *nvmem, void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len) { struct nvmem_device *nvmem = cell->entry->nvmem; - u8 *buf; + void *buf; int rc; if (!nvmem) @@ -1474,7 +1475,7 @@ void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len) if (!buf) return ERR_PTR(-ENOMEM); - rc = __nvmem_cell_read(nvmem, cell->entry, buf, len, cell->id, cell->index); + rc = __nvmem_cell_read(nvmem, cell->entry, &buf, len, cell->id, cell->index); if (rc) { kfree(buf); return ERR_PTR(rc); @@ -1791,11 +1792,15 @@ ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem, if (!nvmem) return -EINVAL; + /* Cells with read_post_process hook may realloc buffer we can't allow here */ + if (info->read_post_process) + return -EINVAL; + rc = nvmem_cell_info_to_nvmem_cell_entry_nodup(nvmem, info, &cell); if (rc) return rc; - rc = __nvmem_cell_read(nvmem, &cell, buf, &len, NULL, 0); + rc = __nvmem_cell_read(nvmem, &cell, &buf, &len, NULL, 0); if (rc) return rc; diff --git a/drivers/nvmem/imx-ocotp.c b/drivers/nvmem/imx-ocotp.c index e37a82f98ba6..0e0ab27cbfe3 100644 --- a/drivers/nvmem/imx-ocotp.c +++ b/drivers/nvmem/imx-ocotp.c @@ -223,18 +223,18 @@ static int imx_ocotp_read(void *context, unsigned int offset, } static int imx_ocotp_cell_pp(void *context, const char *id, int index, - unsigned int offset, void *data, size_t bytes) + unsigned int offset, void **data, size_t *bytes) { struct ocotp_priv *priv = context; /* Deal with some post processing of nvmem cell data */ if (id && !strcmp(id, "mac-address")) { if (priv->params->reverse_mac_address) { - u8 *buf = data; + u8 *buf = *data; int i; - for (i = 0; i < bytes/2; i++) - swap(buf[i], buf[bytes - i - 1]); + for (i = 0; i < *bytes / 2; i++) + swap(buf[i], buf[*bytes - i - 1]); } } diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h index f87fd64eee8f..9c212f7bb7d1 100644 --- a/include/linux/nvmem-provider.h +++ b/include/linux/nvmem-provider.h @@ -19,8 +19,8 @@ typedef int (*nvmem_reg_read_t)(void *priv, unsigned int offset, typedef int (*nvmem_reg_write_t)(void *priv, unsigned int offset, void *val, size_t bytes); /* used for vendor specific post processing of cell data */ -typedef int (*nvmem_cell_post_process_t)(void *priv, const char *id, int index, - unsigned int offset, void *buf, size_t bytes); +typedef int (*nvmem_cell_post_process_t)(void *priv, const char *id, int index, unsigned int offset, + void **buf, size_t *bytes); enum nvmem_type { NVMEM_TYPE_UNKNOWN = 0, -- 2.34.1