lkml.org 
[lkml]   [2022]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V2 3/3] nvmem: core: add cell name based matching of DT cell nodes
    Date
    From: Rafał Miłecki <rafal@milecki.pl>

    When adding NVMEM cells defined by driver it's important to match them
    with DT nodes that specify matching names. That way other bindings &
    drivers can reference such "dynamic" NVMEM cells.

    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    ---
    drivers/nvmem/core.c | 27 +++++++++++++++++++++++++++
    1 file changed, 27 insertions(+)

    diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
    index 53a43d843743..a891449c52f1 100644
    --- a/drivers/nvmem/core.c
    +++ b/drivers/nvmem/core.c
    @@ -499,6 +499,31 @@ static int nvmem_cell_info_to_nvmem_cell_entry(struct nvmem_device *nvmem,
    return 0;
    }

    +/**
    + * nvmem_find_cell_of_node() - Find DT node matching nvmem cell
    + *
    + * @nvmem: nvmem provider
    + * @name: nvmem cell name
    + *
    + * Runtime created nvmem cells (those not coming from DT) may still need to be
    + * referenced in DT. This function allows finding DT node referencing nvmem cell
    + * by its name. Such a DT node can be then used by nvmem consumers.
    + *
    + * Return: NULL or pointer to DT node
    + */
    +static struct device_node *nvmem_find_cell_of_node(struct nvmem_device *nvmem,
    + const char *name)
    +{
    + struct device_node *child;
    +
    + for_each_child_of_node(nvmem->dev.of_node, child) {
    + if (!strcmp(child->name, name))
    + return child;
    + }
    +
    + return NULL;
    +}
    +
    /**
    * nvmem_add_cells() - Add cell information to an nvmem device
    *
    @@ -532,6 +557,8 @@ static int nvmem_add_cells(struct nvmem_device *nvmem,
    goto err;
    }

    + cells[i]->np = nvmem_find_cell_of_node(nvmem, cells[i]->name);
    +
    nvmem_cell_entry_add(cells[i]);
    }

    --
    2.34.1
    \
     
     \ /
      Last update: 2022-02-11 14:07    [W:2.394 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site