Re: [PATCH v3 1/3] nvmem: Update the OF binding to use a subnode for the cells list

From: Rob Herring
Date: Mon Apr 16 2018 - 17:04:36 EST


On Sun, Mar 25, 2018 at 12:24:57AM +0100, Alban Bedel wrote:
> Having the cells as subnodes of the provider device without any
> compatible property might clash with other bindings. To avoid this
> problem update the binding to have all the cells in a 'nvmem-cells'
> subnode with a 'nvmem-cells' compatible string. This new binding
> guarantee that we can turn any kind of device in a nvmem provider.
>
> While discouraged for new uses the old scheme is still supported for
> backward compatibility.
>
> Signed-off-by: Alban Bedel <albeu@xxxxxxx>
> ---
> Documentation/devicetree/bindings/nvmem/nvmem.txt | 55 ++++++++++++++++-------
> drivers/nvmem/core.c | 10 +++++
> 2 files changed, 48 insertions(+), 17 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/nvmem/nvmem.txt b/Documentation/devicetree/bindings/nvmem/nvmem.txt
> index fd06c09..6b723e7 100644
> --- a/Documentation/devicetree/bindings/nvmem/nvmem.txt
> +++ b/Documentation/devicetree/bindings/nvmem/nvmem.txt
> @@ -11,14 +11,29 @@ these data from, and where they are stored on the storage device.
> This document is here to document this.
>
> = Data providers =
> -Contains bindings specific to provider drivers and data cells as children
> -of this node.
> +A data provider should have a subnode named 'nvmem-cells' that contains
> +a subnodes for each data cells.
> +
> +For backward compatibility the nvmem data cells can be direct children
> +of the data provider. This use is discouraged as it can conflict with
> +other bindings.

I don't think we need to go this far. Whether this is necessary depends
on the provider.

>
> Optional properties:
> read-only: Mark the provider as read only.
>
> += Data cells list =
> +The data cells list node should be named 'nvmem-cells' and have a
> +child node for each data cell.
> +
> +Required properties:
> + compatible: Must be "nvmem-cells"
> + #address-cells: <1> if the provider use 32 bit addressing,
> + <2> for 64 bits addressing
> + #size-cells: <1> if the provider use 32 bit sizes,
> + <2> for 64 bits sizes
> +
> = Data cells =
> -These are the child nodes of the provider which contain data cell
> +These are the child nodes of the nvmem-cells node which contain data cell
> information like offset and size in nvmem provider.