Re: [PATCH] of: Add of_get_memory_prop()

From: Rob Herring
Date: Tue Oct 01 2019 - 18:09:26 EST


On Wed, Sep 18, 2019 at 03:32:14PM -0700, rananta@xxxxxxxxxxxxxx wrote:
> On 2019-09-18 13:13, Rob Herring wrote:
> > On Wed, Sep 18, 2019 at 1:47 PM Raghavendra Rao Ananta
> > <rananta@xxxxxxxxxxxxxx> wrote:
> > >
> > > On some embedded systems, the '/memory' dt-property gets updated
> > > by the bootloader (for example, the DDR configuration) and then
> > > gets passed onto the kernel. The device drivers may have to read
> > > the properties at runtime to make decisions. Hence, add
> > > of_get_memory_prop() for the device drivers to query the requested
> >
> > Function name doesn't match. Device drivers don't need to access the
> > FDT.
> >
> > > properties.
> > >
> > > Signed-off-by: Raghavendra Rao Ananta <rananta@xxxxxxxxxxxxxx>
> > > ---
> > > drivers/of/fdt.c | 27 +++++++++++++++++++++++++++
> > > include/linux/of_fdt.h | 1 +
> > > 2 files changed, 28 insertions(+)
> >
> > We don't add kernel api's without users.
> >
> > >
> > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> > > index 223d617ecfe1..925cf2852433 100644
> > > --- a/drivers/of/fdt.c
> > > +++ b/drivers/of/fdt.c
> > > @@ -79,6 +79,33 @@ void __init of_fdt_limit_memory(int limit)
> > > }
> > > }
> > >
> > > +/**
> > > + * of_fdt_get_memory_prop - Return the requested property from the
> > > /memory node
> > > + *
> > > + * On match, returns a non-zero positive value which represents the
> > > property
> > > + * value. Otherwise returns -ENOENT.
> > > + */
> > > +int of_fdt_get_memory_prop(const char *pname)
> > > +{
> > > + int memory;
> > > + int len;
> > > + fdt32_t *prop = NULL;
> > > +
> > > + if (!pname)
> > > + return -EINVAL;
> > > +
> > > + memory = fdt_path_offset(initial_boot_params, "/memory");
> >
> > Memory nodes should have a unit-address, so this won't work frequently.
> Sorry, can you please elaborate more on this? What do you mean by
> unit-address and working frequently?

A memory node is typically going to be something like: /memory@80000000.
So your function will not work for any of those cases. And just
'/memory' generates a dtc warning.

Rob