[PATCH V2 1/2] nvmem: core: refactor .cell_post_process() CB arguments

Michael Walle michael at walle.cc
Sun Nov 27 23:35:24 PST 2022


Am 2022-11-28 07:59, schrieb Rafał Miłecki:
> From: Rafał Miłecki <rafal at milecki.pl>
> 
> Pass whole NVMEM cell struct and length pointer as arguments to 
> callback
> functions.
> 
> This allows:
> 
> 1. Cells content to be modified based on more info
>    Some cells (identified by their names) contain specific data that
>    needs further processing. This can be e.g. MAC address stored in an
>    ASCII format. NVMEM consumers expect MAC to be read in a binary 
> form.
>    More complex cells may be additionally described in DT. This change
>    allows also accessing relevant DT nodes and reading extra info.
> 
> 2. Adjusting data length
>    If cell processing results in reformatting it, it's required to
>    adjust length. This again applies e.g. to the MAC format change from
>    ASCII to the byte-based.
> 
> Later on we may consider more cleanups & features like:
> 1. Dropping "const char *id" and just using NVMEM cell name
> 2. Adding extra argument for cells providing multiple values
> 
> Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
> ---
> This solution conflicts with 1 part of Michael's work:
> [PATCH v2 00/20] nvmem: core: introduce NVMEM layouts
> https://lore.kernel.org/linux-arm-kernel/20220901221857.2600340-1-michael@walle.cc/
> 
> Instead of:
> 1. Adding NVMEM cell-level post_process callback
> 2. Adding callback (.fixup_cell_info()) for setting callbacks
> 3. Dropping NVMEM device-level post_process callback
> I decided to refactor existing callback.
> 
> Michael's work on adding #nvmem-cell-cells should be possible to easily
> rebase on top of those changes.

As yours should be easily added on top of my series. I've showed that
providing a global post process hook is bad because that way you need
to have *all* cells of your device read-only.

-michael



More information about the linux-mtd mailing list