Hello Christian,

On 2/4/20 2:06 PM, Christian Eggers wrote:
> Dear Ahmad,
> 
> Am Montag, 3. Februar 2020, 18:47:29 CET schrieb Ahmad Fatoum:
>> Fortunately, I was mistaken. The upstream bindings says that only objects
>> matching "^.*@[0-9a-f]+$" should be considered for nvmem cells. a partitions
>> node doesn't match this. So I'd instead suggest this:
>>
>>     nvmem: core: don't consider subnodes not matching binding
>>
>>     The nvmem cell binding applies to objects which match "^.*@[0-9a-f]+$",
>>     but so far the driver has matched all objects and failed if they didn't
>>     have the expected properties.
>>
>>     The driver's behavior in this regard precludes future extension of
>>     EEPROMs by child nodes other than nvmem and clashes with the barebox
>>     bootloader binding that extends the fixed-partitions MTD binding to
>>     EEPROMs.
>>
>>     Solve this issue by checking whether the node name contains a @.
>>     This still matches against node names like partitions@0,0, but this is
>>     much less likely to cause future collisions.
>>
>>     Signed-off-by: Ahmad Fatoum <[email protected]>
>>
> 
> I have a different approach, taken from the Linux MTD sources. Here the DT 
> partitions are added as NVMEM cells. Is there any conceptual difference 
> between "MTD partitions" and "NVMEM cells"? 

Theoretically, you could have both NVMEM cells and MTD partitions in the same 
node.
There has been a patch introducing this binding[1], but it seems it was 
abandoned.

But even without this, they are different subsystems with different device tree
bindings, in-kernel API for accessing and userspace interface and I don't think
mixing them is a good idea.
 
> Are you able to bring one/both patches into Linux?

I can try posting my patch. I'll wait a bit to see if someone has feedback.
I will add you to CC when I send it out.

Cheers
Ahmad

[1]: https://lore.kernel.org/patchwork/patch/765436/

> 
> Regards
> Christian
> 
> From 927f3aa9c4a64802f25ef2f292caa1dc951ce667 Mon Sep 17 00:00:00 2001
> From: Christian Eggers <[email protected]>
> Date: Tue, 4 Feb 2020 13:52:36 +0100
> Subject: [PATCH] nvmem: core: Move OF cells to a dedicated dt node
> 
> In 5cfdedb7b9 ("mtd: ofpart: move ofpart partitions to a dedicated dt
> node"), mtd introduced the separate "partitions" node as container for
> the partitions of a MTD device.
> 
> This commit applies a similar behavior to NVMEM partitions/cells.
> 
> Signed-off-by: Christian Eggers <[email protected]>
> ---
>  drivers/nvmem/core.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> index 057d1ff87d5d..3e93b82b96bd 100644
> --- a/drivers/nvmem/core.c
> +++ b/drivers/nvmem/core.c
> @@ -287,7 +287,7 @@ nvmem_find_cell_by_name(struct nvmem_device *nvmem, const 
> char *cell_id)
>  
>  static int nvmem_add_cells_from_of(struct nvmem_device *nvmem)
>  {
> -     struct device_node *parent, *child;
> +     struct device_node *parent, *child, *ofpart_node;
>       struct device *dev = &nvmem->dev;
>       struct nvmem_cell *cell;
>       const __be32 *addr;
> @@ -295,7 +295,16 @@ static int nvmem_add_cells_from_of(struct nvmem_device 
> *nvmem)
>  
>       parent = dev->of_node;
>  
> -     for_each_child_of_node(parent, child) {
> +     ofpart_node = of_get_child_by_name(parent, "partitions");
> +     if (!ofpart_node) {
> +             /* Try to parse direct subnodes */
> +             ofpart_node = parent;
> +     } else if (!of_device_is_compatible(ofpart_node, "fixed-partitions")) {
> +             /* The 'partitions' subnode might be used by another parser */
> +             return 0;
> +     }
> +
> +     for_each_child_of_node(ofpart_node, child) {
>               addr = of_get_property(child, "reg", &len);
>               if (!addr || (len < 2 * sizeof(u32))) {
>                       dev_err(dev, "nvmem: invalid reg on %pOF\n", child);
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to