From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
To: "Michael Walle" <michael@walle.cc>,
"Miquel Raynal" <miquel.raynal@bootlin.com>,
"Richard Weinberger" <richard@nod.at>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
"Shawn Guo" <shawnguo@kernel.org>, "Li Yang" <leoyang.li@nxp.com>,
"Rafał Miłecki" <rafal@milecki.pl>,
"Frank Rowand" <frowand.list@gmail.com>
Cc: linux-mtd@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Ahmad Fatoum <a.fatoum@pengutronix.de>,
Philipp Zabel <p.zabel@pengutronix.de>
Subject: Re: [PATCH v2 06/20] nvmem: core: add nvmem_add_one_cell()
Date: Fri, 9 Sep 2022 09:52:12 +0100 [thread overview]
Message-ID: <bee9db9d-fc1b-41d8-5714-1c7f48bb0722@linaro.org> (raw)
In-Reply-To: <20220901221857.2600340-7-michael@walle.cc>
On 01/09/2022 23:18, Michael Walle wrote:
> Add a new function to add exactly one cell. This will be used by the
> nvmem layout drivers to add custom cells. In contrast to the
> nvmem_add_cells(), this has the advantage that we don't have to assemble
> a list of cells on runtime.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
> changes since v1:
> - none
>
> drivers/nvmem/core.c | 58 ++++++++++++++++++++--------------
> include/linux/nvmem-provider.h | 8 +++++
> 2 files changed, 42 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> index be38e62fd190..3dfd149374a8 100644
> --- a/drivers/nvmem/core.c
> +++ b/drivers/nvmem/core.c
> @@ -501,6 +501,35 @@ static int nvmem_cell_info_to_nvmem_cell_entry(struct nvmem_device *nvmem,
> return 0;
> }
>
> +/**
> + * nvmem_add_one_cell() - Add one cell information to an nvmem device
> + *
> + * @nvmem: nvmem device to add cells to.
> + * @info: nvmem cell info to add to the device
> + *
> + * Return: 0 or negative error code on failure.
> + */
> +int nvmem_add_one_cell(struct nvmem_device *nvmem,
> + const struct nvmem_cell_info *info)
> +{
> + struct nvmem_cell_entry *cell;
> + int rval;
> +
> + cell = kzalloc(sizeof(*cell), GFP_KERNEL);
> + if (!cell)
> + return -ENOMEM;
> +
> + rval = nvmem_cell_info_to_nvmem_cell_entry(nvmem, info, cell);
> + if (rval) {
> + kfree(cell);
> + return rval;
> + }
> +
> + nvmem_cell_entry_add(cell);
> +
> + return 0;
> +}
> +
EXPORT_SYMBOL_GPL ???
> /**
> * nvmem_add_cells() - Add cell information to an nvmem device
> *
> @@ -514,34 +543,15 @@ static int nvmem_add_cells(struct nvmem_device *nvmem,
> const struct nvmem_cell_info *info,
> int ncells)
> {
> - struct nvmem_cell_entry **cells;
> - int i, rval = 0;
> -
> - cells = kcalloc(ncells, sizeof(*cells), GFP_KERNEL);
> - if (!cells)
> - return -ENOMEM;
> + int i, rval;
>
> for (i = 0; i < ncells; i++) {
> - cells[i] = kzalloc(sizeof(**cells), GFP_KERNEL);
> - if (!cells[i]) {
> - rval = -ENOMEM;
> - goto out;
> - }
> -
> - rval = nvmem_cell_info_to_nvmem_cell_entry(nvmem, &info[i], cells[i]);
> - if (rval) {
> - kfree(cells[i]);
> - goto out;
> - }
> -
> - nvmem_cell_entry_add(cells[i]);
> + rval = nvmem_add_one_cell(nvmem, &info[i]);
> + if (rval)
> + return rval;
> }
>
> -out:
> - /* remove tmp array */
> - kfree(cells);
> -
> - return rval;
> + return 0;
> }
>
> /**
> diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h
> index 14a32a1bc249..385d29168008 100644
> --- a/include/linux/nvmem-provider.h
> +++ b/include/linux/nvmem-provider.h
> @@ -155,6 +155,9 @@ struct nvmem_device *devm_nvmem_register(struct device *dev,
> void nvmem_add_cell_table(struct nvmem_cell_table *table);
> void nvmem_del_cell_table(struct nvmem_cell_table *table);
>
> +int nvmem_add_one_cell(struct nvmem_device *nvmem,
> + const struct nvmem_cell_info *info);
> +
> #else
>
> static inline struct nvmem_device *nvmem_register(const struct nvmem_config *c)
> @@ -172,6 +175,11 @@ devm_nvmem_register(struct device *dev, const struct nvmem_config *c)
>
> static inline void nvmem_add_cell_table(struct nvmem_cell_table *table) {}
> static inline void nvmem_del_cell_table(struct nvmem_cell_table *table) {}
> +static inline int nvmem_add_one_cell(struct nvmem_device *nvmem,
> + const struct nvmem_cell_info *info)
> +{
> + return -EOPNOTSUPP;
> +}
>
> #endif /* CONFIG_NVMEM */
> #endif /* ifndef _LINUX_NVMEM_PROVIDER_H */
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-09-09 8:53 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-01 22:18 [PATCH v2 00/20] nvmem: core: introduce NVMEM layouts Michael Walle
2022-09-01 22:18 ` [PATCH v2 01/20] net: add helper eth_addr_add() Michael Walle
2022-09-01 23:22 ` Randy Dunlap
2022-09-02 7:27 ` Michael Walle
2022-09-01 22:18 ` [PATCH v2 02/20] of: base: add of_parse_phandle_with_optional_args() Michael Walle
2022-09-01 22:18 ` [PATCH v2 03/20] nvmem: core: add an index parameter to the cell Michael Walle
2022-09-09 8:12 ` Srinivas Kandagatla
2022-09-01 22:18 ` [PATCH v2 04/20] nvmem: core: move struct nvmem_cell_info to nvmem-provider.h Michael Walle
2022-09-01 22:18 ` [PATCH v2 05/20] nvmem: core: drop the removal of the cells in nvmem_add_cells() Michael Walle
2022-09-01 22:18 ` [PATCH v2 06/20] nvmem: core: add nvmem_add_one_cell() Michael Walle
2022-09-09 8:52 ` Srinivas Kandagatla [this message]
2022-09-01 22:18 ` [PATCH v2 07/20] nvmem: core: use nvmem_add_one_cell() in nvmem_add_cells_from_of() Michael Walle
2022-09-01 22:18 ` [PATCH v2 08/20] nvmem: core: introduce NVMEM layouts Michael Walle
2022-09-01 22:18 ` [PATCH v2 09/20] nvmem: core: add per-cell post processing Michael Walle
2022-09-01 22:18 ` [PATCH v2 10/20] nvmem: core: allow to modify a cell before adding it Michael Walle
2022-09-01 22:18 ` [PATCH v2 11/20] nvmem: imx-ocotp: replace global post processing with layouts Michael Walle
2022-09-07 12:31 ` Michael Walle
2022-09-01 22:18 ` [PATCH v2 12/20] nvmem: cell: drop global cell_post_process Michael Walle
2022-09-01 22:18 ` [PATCH v2 13/20] nvmem: core: drop priv pointer in post process callback Michael Walle
2022-09-09 8:52 ` Srinivas Kandagatla
2022-09-09 8:58 ` Michael Walle
2022-09-09 9:08 ` Srinivas Kandagatla
2022-09-09 9:39 ` Michael Walle
2022-09-01 22:18 ` [PATCH v2 14/20] dt-bindings: mtd: relax the nvmem compatible string Michael Walle
2022-09-08 12:21 ` Krzysztof Kozlowski
2022-09-01 22:18 ` [PATCH v2 15/20] dt-bindings: nvmem: add YAML schema for the sl28 vpd layout Michael Walle
2022-09-08 12:22 ` Krzysztof Kozlowski
2022-09-12 19:20 ` Rob Herring
2022-09-13 14:21 ` Michael Walle
2022-09-22 9:22 ` Miquel Raynal
2022-09-01 22:18 ` [PATCH v2 16/20] nvmem: layouts: add sl28vpd layout Michael Walle
2022-09-01 22:18 ` [PATCH v2 17/20] nvmem: core: export nvmem device size Michael Walle
2022-09-01 22:18 ` [PATCH v2 18/20] arm64: dts: ls1028a: sl28: get MAC addresses from VPD Michael Walle
2022-09-01 22:18 ` [RFC PATCH v2 19/20] nvmem: layouts: rewrite the u-boot-env driver as a NVMEM layout Michael Walle
2022-09-21 10:37 ` Miquel Raynal
2022-09-01 22:18 ` [RFC PATCH v2 20/20] nvmem: layouts: u-boot-env: add device node Michael Walle
2022-09-21 9:58 ` [PATCH v2 00/20] nvmem: core: introduce NVMEM layouts Miquel Raynal
2022-09-22 21:22 ` Srinivas Kandagatla
2022-09-23 8:31 ` Miquel Raynal
2022-09-23 15:47 ` Miquel Raynal
2022-09-23 17:28 ` Michael Walle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bee9db9d-fc1b-41d8-5714-1c7f48bb0722@linaro.org \
--to=srinivas.kandagatla@linaro.org \
--cc=a.fatoum@pengutronix.de \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=leoyang.li@nxp.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=michael@walle.cc \
--cc=miquel.raynal@bootlin.com \
--cc=p.zabel@pengutronix.de \
--cc=rafal@milecki.pl \
--cc=richard@nod.at \
--cc=robh+dt@kernel.org \
--cc=shawnguo@kernel.org \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).