Subject: Re: [PATCH 3/5] dt-bindings: nvmem: allow referencing device defined cells by names

From: Rob Herring <[email-masked]>
Date: Mon, 10 Jan 2022 11:44:51 -0600

On Tue, Jan 04, 2022 at 09:56:01PM +0100, Rafał Miłecki wrote:
> On 4.01.2022 21:50, Rafał Miłecki wrote:
> > On 4.01.2022 21:16, Rob Herring wrote:
> > > On Thu, Dec 23, 2021 at 10:58:56PM +0100, Rafał Miłecki wrote:
> > > > On 23.12.2021 22:18, Rob Herring wrote:
> > > > > On Thu, Dec 23, 2021 at 7:08 AM Rafał Miłecki <[email-masked]> wrote:
> > > > > > 
> > > > > > From: Rafał Miłecki <[email-masked]>
> > > > > > 
> > > > > > Not every NVMEM has predefined cells at hardcoded addresses. Some
> > > > > > devices store cells in internal structs and custom formats. Referencing
> > > > > > such cells is still required to let other bindings use them.
> > > > > > 
> > > > > > Modify binding to require "reg" xor "label". The later one can be used
> > > > > > to match "dynamic" NVMEM cells by their names.
> > > > > 
> > > > > 'label' is supposed to correspond to a sticker on a port or something
> > > > > human identifiable. It generally should be something optional to
> > > > > making the OS functional. Yes, there are already some abuses of that,
> > > > > but this case is too far for me.
> > > > 
> > > > Good to learn that!
> > > > 
> > > > "name" is special & not allowed I think.
> > > 
> > > It's the node name essentially. Why is using node names not sufficient?
> > > Do you have some specific examples?
> > 
> > I tried to explain in
> > [PATCH 1/5] dt-bindings: nvmem: add "label" property to allow more flexible cells names
> > that some vendors come with fancy names that can't fit node names.

I still don't see the issue. Why do you need 'more flexible cells 
names'? What problem does that solve?

> > Broadcom's NVRAM examples:
> > 0:macaddr
> > 1:macaddr
> > 2:macaddr
> > 0:ccode
> > 1:ccode
> > 2:ccode
> > 0:regrev
>
> In other words I'd like to have something like:
> 
> nvram@1eff0000 {
> 	compatible = "brcm,nvram";
> 	reg = <0x1eff0000 0x10000>;
> 
> 	mac: cell-0 {
> 		label = "1:macaddr";
> 	};
> };
> 
> ethernet@1000 {
> 	compatible = "brcm,ethernet";
> 	reg = <0x1000 0x1000>;
> 	nvmem-cells = <&mac>;
> 	nvmem-cell-names = "mac-address";
> };

How does 'label' help here?

Note there's some other efforts around multiple mac addresses and how to 
interpret the nvmem data. Maybe that helps solve your problem.

Rob