All of lore.kernel.org
 help / color / mirror / Atom feed
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 |

  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.