mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	Copy backport, hack, pending patch and config from 5.15 to 6.1. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 6c56a82d7895a213a43182a5d01a21a906a79847 Mon Sep 17 00:00:00 2001
 | |
| From: Michael Walle <michael@walle.cc>
 | |
| Date: Tue, 4 Apr 2023 18:21:26 +0100
 | |
| Subject: [PATCH] nvmem: imx-ocotp: replace global post processing with layouts
 | |
| 
 | |
| In preparation of retiring the global post processing hook change this
 | |
| driver to use layouts. The layout will be supplied during registration
 | |
| and will be used to add the post processing hook to all added cells.
 | |
| 
 | |
| Signed-off-by: Michael Walle <michael@walle.cc>
 | |
| Tested-by: Michael Walle <michael@walle.cc> # on kontron-pitx-imx8m
 | |
| Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
 | |
| Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
 | |
| Link: https://lore.kernel.org/r/20230404172148.82422-19-srinivas.kandagatla@linaro.org
 | |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 | |
| ---
 | |
|  drivers/nvmem/imx-ocotp.c | 30 +++++++++++++++++++-----------
 | |
|  1 file changed, 19 insertions(+), 11 deletions(-)
 | |
| 
 | |
| --- a/drivers/nvmem/imx-ocotp.c
 | |
| +++ b/drivers/nvmem/imx-ocotp.c
 | |
| @@ -225,18 +225,13 @@ read_end:
 | |
|  static int imx_ocotp_cell_pp(void *context, const char *id, int index,
 | |
|  			     unsigned int offset, void *data, size_t bytes)
 | |
|  {
 | |
| -	struct ocotp_priv *priv = context;
 | |
| +	u8 *buf = data;
 | |
| +	int i;
 | |
|  
 | |
|  	/* Deal with some post processing of nvmem cell data */
 | |
| -	if (id && !strcmp(id, "mac-address")) {
 | |
| -		if (priv->params->reverse_mac_address) {
 | |
| -			u8 *buf = data;
 | |
| -			int i;
 | |
| -
 | |
| -			for (i = 0; i < bytes/2; i++)
 | |
| -				swap(buf[i], buf[bytes - i - 1]);
 | |
| -		}
 | |
| -	}
 | |
| +	if (id && !strcmp(id, "mac-address"))
 | |
| +		for (i = 0; i < bytes / 2; i++)
 | |
| +			swap(buf[i], buf[bytes - i - 1]);
 | |
|  
 | |
|  	return 0;
 | |
|  }
 | |
| @@ -488,7 +483,6 @@ static struct nvmem_config imx_ocotp_nvm
 | |
|  	.stride = 1,
 | |
|  	.reg_read = imx_ocotp_read,
 | |
|  	.reg_write = imx_ocotp_write,
 | |
| -	.cell_post_process = imx_ocotp_cell_pp,
 | |
|  };
 | |
|  
 | |
|  static const struct ocotp_params imx6q_params = {
 | |
| @@ -595,6 +589,17 @@ static const struct of_device_id imx_oco
 | |
|  };
 | |
|  MODULE_DEVICE_TABLE(of, imx_ocotp_dt_ids);
 | |
|  
 | |
| +static void imx_ocotp_fixup_cell_info(struct nvmem_device *nvmem,
 | |
| +				      struct nvmem_layout *layout,
 | |
| +				      struct nvmem_cell_info *cell)
 | |
| +{
 | |
| +	cell->read_post_process = imx_ocotp_cell_pp;
 | |
| +}
 | |
| +
 | |
| +struct nvmem_layout imx_ocotp_layout = {
 | |
| +	.fixup_cell_info = imx_ocotp_fixup_cell_info,
 | |
| +};
 | |
| +
 | |
|  static int imx_ocotp_probe(struct platform_device *pdev)
 | |
|  {
 | |
|  	struct device *dev = &pdev->dev;
 | |
| @@ -619,6 +624,9 @@ static int imx_ocotp_probe(struct platfo
 | |
|  	imx_ocotp_nvmem_config.size = 4 * priv->params->nregs;
 | |
|  	imx_ocotp_nvmem_config.dev = dev;
 | |
|  	imx_ocotp_nvmem_config.priv = priv;
 | |
| +	if (priv->params->reverse_mac_address)
 | |
| +		imx_ocotp_nvmem_config.layout = &imx_ocotp_layout;
 | |
| +
 | |
|  	priv->config = &imx_ocotp_nvmem_config;
 | |
|  
 | |
|  	clk_prepare_enable(priv->clk);
 |