From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Joakim Zhang <qiangqing.zhang@nxp.com>,
srinivas.kandagatla@linaro.org, robh+dt@kernel.org,
shawnguo@kernel.org
Cc: devicetree@vger.kernel.org, linux-imx@nxp.com,
kernel@pengutronix.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/6] nvmem: core: add nvmem cell post processing callback
Date: Wed, 22 Sep 2021 13:37:19 +0200 [thread overview]
Message-ID: <c76b326d-fbef-8c4c-bda8-cef25cac0266@pengutronix.de> (raw)
In-Reply-To: <20210908100257.17833-4-qiangqing.zhang@nxp.com>
On 08.09.21 12:02, Joakim Zhang wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>
> Some NVMEM providers have certain nvmem cells encoded, which requires
> post processing before actually using it.
>
> For example mac-address is stored in either in ascii or delimited or reverse-order.
>
> Having a post-process callback hook to provider drivers would enable them to
> do this vendor specific post processing before nvmem consumers see it.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
> ---
> drivers/nvmem/core.c | 9 +++++++++
> include/linux/nvmem-provider.h | 5 +++++
> 2 files changed, 14 insertions(+)
>
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> index 23c08dbaf45e..4f81a3adf081 100644
> --- a/drivers/nvmem/core.c
> +++ b/drivers/nvmem/core.c
> @@ -38,6 +38,7 @@ struct nvmem_device {
> unsigned int nkeepout;
> nvmem_reg_read_t reg_read;
> nvmem_reg_write_t reg_write;
> + nvmem_cell_post_process_t cell_post_process;
> struct gpio_desc *wp_gpio;
> void *priv;
> };
> @@ -797,6 +798,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
> nvmem->type = config->type;
> nvmem->reg_read = config->reg_read;
> nvmem->reg_write = config->reg_write;
> + nvmem->cell_post_process = config->cell_post_process;
> nvmem->keepout = config->keepout;
> nvmem->nkeepout = config->nkeepout;
> if (config->of_node)
> @@ -1404,6 +1406,13 @@ static int __nvmem_cell_read(struct nvmem_device *nvmem,
> if (cell->bit_offset || cell->nbits)
> nvmem_shift_read_buffer_in_place(cell, buf);
>
> + if (nvmem->cell_post_process) {
> + rc = nvmem->cell_post_process(nvmem->priv, cell->type,
> + cell->offset, buf, cell->bytes);
> + if (rc)
> + return rc;
> + }
> +
> if (len)
> *len = cell->bytes;
>
> diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h
> index 104505e9028f..d980c79f9605 100644
> --- a/include/linux/nvmem-provider.h
> +++ b/include/linux/nvmem-provider.h
> @@ -19,6 +19,9 @@ typedef int (*nvmem_reg_read_t)(void *priv, unsigned int offset,
> void *val, size_t bytes);
> 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, int type, unsigned int offset,
> + void *buf, size_t bytes);
>
> enum nvmem_type {
> NVMEM_TYPE_UNKNOWN = 0,
> @@ -62,6 +65,7 @@ struct nvmem_keepout {
> * @no_of_node: Device should not use the parent's of_node even if it's !NULL.
> * @reg_read: Callback to read data.
> * @reg_write: Callback to write data.
> + * @cell_read_callback: Callback for vendor specific post processing of cell data
The member below is called cell_post_process
> * @size: Device size.
> * @word_size: Minimum read/write access granularity.
> * @stride: Minimum read/write access stride.
> @@ -92,6 +96,7 @@ struct nvmem_config {
> bool no_of_node;
> nvmem_reg_read_t reg_read;
> nvmem_reg_write_t reg_write;
> + nvmem_cell_post_process_t cell_post_process;
> int size;
> int word_size;
> int stride;
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2021-09-22 11:37 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-08 10:02 [PATCH 0/6] nvmem: add "cell-type" property to support mac-address Joakim Zhang
2021-09-08 10:02 ` [PATCH 1/6] dt-bindings: nvmem: add cell-type to nvmem cells Joakim Zhang
2021-09-22 11:34 ` Ahmad Fatoum
2021-09-22 12:23 ` Srinivas Kandagatla
2021-09-22 12:31 ` Ahmad Fatoum
2021-09-22 12:49 ` Srinivas Kandagatla
2021-09-22 12:58 ` Ahmad Fatoum
2021-09-22 13:03 ` Srinivas Kandagatla
2021-09-22 13:08 ` Ahmad Fatoum
2021-09-22 13:23 ` Srinivas Kandagatla
2021-09-23 20:02 ` Ahmad Fatoum
2021-09-23 2:51 ` Joakim Zhang
2021-09-08 10:02 ` [PATCH 2/6] nvmem: core: parse nvmem cell-type from device tree Joakim Zhang
2021-09-22 11:36 ` Ahmad Fatoum
2021-09-08 10:02 ` [PATCH 3/6] nvmem: core: add nvmem cell post processing callback Joakim Zhang
2021-09-22 11:37 ` Ahmad Fatoum [this message]
2021-09-23 2:52 ` Joakim Zhang
2021-09-08 10:02 ` [PATCH 4/6] nvmem: imx-ocotp: add support for post porcessing Joakim Zhang
2021-09-08 10:02 ` [PATCH 5/6] arm64: dts: imx8mm: add "cell-type" property for mac-address Joakim Zhang
2021-09-22 11:40 ` Ahmad Fatoum
2021-09-23 2:52 ` Joakim Zhang
2021-09-08 10:02 ` [PATCH 6/6] arm64: dts: imx8m: remove unused "nvmem_macaddr_swap" property for FEC Joakim Zhang
2021-09-22 11:40 ` Ahmad Fatoum
2021-09-22 10:46 ` [PATCH 0/6] nvmem: add "cell-type" property to support mac-address Joakim Zhang
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=c76b326d-fbef-8c4c-bda8-cef25cac0266@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=devicetree@vger.kernel.org \
--cc=kernel@pengutronix.de \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=qiangqing.zhang@nxp.com \
--cc=robh+dt@kernel.org \
--cc=shawnguo@kernel.org \
--cc=srinivas.kandagatla@linaro.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.