On Mon, Jun 01, 2020 at 10:13:05AM +0100, Srinivas Kandagatla wrote: > > > On 01/06/2020 10:03, Vadym Kochan wrote: > > > > + > > > > + nvmem = of_nvmem_device_get(np, NULL); > > > > + if (IS_ERR(nvmem)) > > > > + return PTR_ERR(nvmem); > > > > + > > > TBH, this looks completely incorrect way to do this and misuse of nvmem > > > consumer interface. > > > > > > Ideally nvmem provider driver should populate "cells" in struct > > > nvmem_config > > > after decoding them and then register nvmem provider. > > > > > > That should just work! > > > > > > > > > --srini > > But this is not nvmem provider but just describes the cells for any > > nvmem device, because ONIE uses special TLV structure on the nvmem > > device. So from the nvmem device point it is a consumer but provides the > > cells > > for the given device. > > That still falls under nvmem providers responsibility to parse these cells > before registering it. OK, I thought that it is legal to have separate nvmem driver which provides access to the device itself, and other driver which describes the layout of the cells which might be applicable to any nvmem.
> > BTW, where is the provider driver for this in kernel ? > > > --srini > > > One of the example is atmel eeprom (at24), but there might be different devices. But can you please explain what is the technical/conceptual issue with this approach ? Thanks,

