Re: [RFC PATCH] nvmem: core: add sysfs cell write support

From: Miquel Raynal
Date: Mon Feb 19 2024 - 06:04:30 EST


Hi Marco,

m.felsch@xxxxxxxxxxxxxx wrote on Fri, 16 Feb 2024 11:07:50 +0100:

> Hi Michael,
>
> On 24-02-16, Michael Walle wrote:
> > Hi,
> >
> > On Thu Feb 15, 2024 at 10:14 PM CET, Marco Felsch wrote:
> > > @@ -432,6 +466,7 @@ static int nvmem_populate_sysfs_cells(struct nvmem_device *nvmem)
> > > struct bin_attribute **cells_attrs, *attrs;
> > > struct nvmem_cell_entry *entry;
> > > unsigned int ncells = 0, i = 0;
> > > + umode_t mode;
> > > int ret = 0;
> > >
> > > mutex_lock(&nvmem_mutex);
> > > @@ -456,15 +491,18 @@ static int nvmem_populate_sysfs_cells(struct nvmem_device *nvmem)
> > > goto unlock_mutex;
> > > }
> > >
> > > + mode = nvmem_bin_attr_get_umode(nvmem);
> > > +
> > > /* Initialize each attribute to take the name and size of the cell */
> > > list_for_each_entry(entry, &nvmem->cells, node) {
> > > sysfs_bin_attr_init(&attrs[i]);
> > > attrs[i].attr.name = devm_kasprintf(&nvmem->dev, GFP_KERNEL,
> > > "%s@%x", entry->name,
> > > entry->offset);
> > > - attrs[i].attr.mode = 0444;
> >
> > cells are not writable if there is a read post process hook, see
> > __nvmem_cell_entry_write().
> >
> > if (entry->read_post_processing)
> > mode &= ~0222;
>
> good point, thanks for the hint :) I will add this and send a non-rfc
> version if write-support is something you would like to have.

I like the idea but, what about mtd devices (and soon maybe UBI
devices)? This may only work on EEPROM-like devices I guess, where each
area is fully independent and where no erasure is actually expected.

Thanks,
Miquèl