Hi Srini, On Tue, Jun 30, 2020 at 10:41:24AM +0100, Srinivas Kandagatla wrote: > TBH, this functionality need to go into core driver which already has IDR to > allocated ID's for nvmem providers. > > Can you try this patch: The patch doesn't apply to v5.8-rc, so I manually applied it for testing. It works like a charm. Tested-by: Shawn Guo <shawn.guo@xxxxxxxxxx> Please copy me when you post it, so that I can pick it up for my project. Thanks! Shawn > > ---------------------------->cut<---------------------------------diff --git > a/drivers/nvmem/core.c b/drivers/nvmem/core.c > index 927eb5f6003f..aa87bd6415ab 100644 > --- a/drivers/nvmem/core.c > +++ b/drivers/nvmem/core.c > @@ -629,12 +629,18 @@ struct nvmem_device *nvmem_register(const struct > nvmem_config *config) > if (!config->no_of_node) > nvmem->dev.of_node = config->dev->of_node; > > - if (config->id == -1 && config->name) { > + switch (config->id) { > + case NVMEM_DEVID_NONE: > dev_set_name(&nvmem->dev, "%s", config->name); > - } else { > + break; > + case NVMEM_DEVID_AUTO: > + dev_set_name(&nvmem->dev, "%s%d", config->name, nvmem->id); > + break; > + default: > dev_set_name(&nvmem->dev, "%s%d", > config->name ? : "nvmem", > config->name ? config->id : nvmem->id); > + break; > } > > nvmem->read_only = device_property_present(config->dev, "read-only") > || > diff --git a/drivers/nvmem/qfprom.c b/drivers/nvmem/qfprom.c > index 8a91717600be..8b425f8d847d 100644 > --- a/drivers/nvmem/qfprom.c > +++ b/drivers/nvmem/qfprom.c > @@ -31,6 +31,7 @@ static struct nvmem_config econfig = { > .name = "qfprom", > .stride = 1, > .word_size = 1, > + .id = NVMEM_DEVID_AUTO, > .reg_read = qfprom_reg_read, > }; > > diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h > index 6d6f8e5d24c9..06409a6c40bc 100644 > --- a/include/linux/nvmem-provider.h > +++ b/include/linux/nvmem-provider.h > @@ -27,6 +27,9 @@ enum nvmem_type { > NVMEM_TYPE_BATTERY_BACKED, > }; > > +#define NVMEM_DEVID_NONE (-1) > +#define NVMEM_DEVID_AUTO (-2) > + > /** > * struct nvmem_config - NVMEM device configuration > * > ---------------------------->cut<---------------------------------